diff -N -x '*CVS*' -r -u x11r680/xc/BUILD x11r682/xc/BUILD --- xc/BUILD 2004-09-08 03:54:28.000000000 +0200 +++ xc/BUILD 2005-02-08 01:44:26.000000000 +0100 @@ -1,9 +1,9 @@ Building the X Window System from the X.org Source Distribution - Jim Gettys and Keith Packard (for X11R6.8) + Jim Gettys and Keith Packard (for X11R6.8.2) David Dawes and Matthieu Herrb (for XFree86 4.4 RC2) - 8 September 2004 + 9 February 2005 Abstract @@ -22,62 +22,62 @@ son, flex, zlib (development package), ncurses (development package), font- config (development package), expat (development package), and Perl. -1. How to get the X11R6.8 distribution source +1. How to get the X11R6.8.2 distribution source -One way of getting the X11R6.8 source is to obtain it directly from the X.Org -CVS repository. There are several ways of doing that, and they are described -in the CVS section of our wiki The CVS tag for this -release is "XORG-6_8_0". The tag for the maintenance branch for this -release is "XORG-6_8-branch". +One way of getting the X11R6.8.2 source is to obtain it directly from the +X.Org CVS repository. There are several ways of doing that, and they are +described in the CVS section of our wiki The CVS tag +for this release is "XORG-6_8_2". The tag for the maintenance branch for +this release is "XORG-6_8-branch". -Another method of getting the X11R6.8 source is to either download the 6.8.0 -source tarballs sites from freedesktop.org using either ftp or http. The -procedure for this is as follows: +Another method of getting the X11R6.8.2 source is to either download the +6.8.2 source tarballs sites from freedesktop.org using either ftp or http. +The procedure for this is as follows: - o The X11R6.8 source is contained in the files: + o The X11R6.8.2 source is contained in the files: - X11R6.8.0-src1.tar.gz + X11R6.8.2-src1.tar.gz - X11R6.8.0-src2.tar.gz + X11R6.8.2-src2.tar.gz - X11R6.8.0-src3.tar.gz + X11R6.8.2-src3.tar.gz - X11R6.8.0-src4.tar.gz + X11R6.8.2-src4.tar.gz - X11R6.8.0-src5.tar.gz + X11R6.8.2-src5.tar.gz - X11R6.8.0-src6.tar.gz + X11R6.8.2-src6.tar.gz - X11R6.8.0-src7.tar.gz + X11R6.8.2-src7.tar.gz - These can be found at ftp://ftp.freedesktop.org/xorg/X11R6.8/src/ or - http://freedesktop.org/~xorg/X11R6.8/src/ and similar locations on - X.org mirror sites. X11R6.8.0-src4.tgz and X11R6.8.0-src5.tar.gz con- - tains the fonts. X11R6.8.0-src6.tar.gz contains the documentation - source. X11R6.8.0-src7.tar.gz contains the hardcopy documentation. - X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and X11R6.8.0-src3.tar.gz + These can be found at ftp://ftp.freedesktop.org/xorg/X11R6.8.2/src/ or + http://freedesktop.org/~xorg/X11R6.8.2/src/ and similar locations on + X.org mirror sites. X11R6.8.2-src4.tgz and X11R6.8.2-src5.tar.gz con- + tains the fonts. X11R6.8.2-src6.tar.gz contains the documentation + source. X11R6.8.2-src7.tar.gz contains the hardcopy documentation. + X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and X11R6.8.2-src3.tar.gz contains everything else. If you don't need the docs or fonts you can - get by with only X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and - X11R6.8.0-src3.tar.gz. + get by with only X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and + X11R6.8.2-src3.tar.gz. o Extract each of these files by running the following from a directory on a filesystem containing enough space (the full source requires around 305MB, and a similar amount is required in addition to this for the com- piled binaries): - gzip -d < X11R6.8.0-src1.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src1.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src2.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src2.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src3.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src3.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src4.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src4.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src5.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src5.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src6.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src6.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src7.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src7.tar.gz | tar vxf - All methods will produce one main source directory called xc. @@ -96,25 +96,25 @@ easy to create build problems by changing the default configuration. Check the configuration parameters specified in the xc/config/cf/README. -If you are using just the X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and -X11R6.8.0-src3.tar.gz parts of the source dist, you will need to define +If you are using just the X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and +X11R6.8.2-src3.tar.gz parts of the source dist, you will need to define BuildFonts to NO. 3. Using a shadow directory of symbolic links for the build A recommended practice is to use a shadow directory of symbolic links to do -the build of X11R6.8 as this allows you to keep the source directory unmodi- -fied during the build. It has the following benefits: +the build of X11R6.8.2 as this allows you to keep the source directory unmod- +ified during the build. It has the following benefits: o When you are using CVS to maintain your source tree, the update process is not disturbed by foreign files not under CVS's control. - o It is possible to build X11R6.8 for several different Operating System + o It is possible to build X11R6.8.2 for several different Operating System or architectures from the same sources, shared by read-only NFS mounts. - o It is possible to build X11R6.8 with different configuration options, by - putting a real copy of the host.def file in each build tree and by cus- - tomizing it separately in each build tree. + o It is possible to build X11R6.8.2 with different configuration options, + by putting a real copy of the host.def file in each build tree and by + customizing it separately in each build tree. To make a shadow directory of symbolic links, use the following steps: @@ -135,7 +135,7 @@ See the lndir(1) manual page for details. If lndir is not already installed on your system, you can build it manually -from the X11R6.8 sources by running the following commands: +from the X11R6.8.2 sources by running the following commands: cd xc/config/util @@ -158,9 +158,9 @@ addressed the OS-specific details, go your build directory (either the xc directory or the shadow tree created before) and run "make World" with the BOOTSTRAPCFLAGS set as described in the OS-specific README (if necessary, but -most systems supported by X11R6.8 don't need BOOTSTRAPCFLAGS). It is advis- -able to redirect stdout and stderr to World.Log so that you can track down -problems that might occur during the build. +most systems supported by X11R6.8.2 don't need BOOTSTRAPCFLAGS). It is +advisable to redirect stdout and stderr to World.Log so that you can track +down problems that might occur during the build. With Bourne-like shells (Bash, the Korn shell, zsh, etc.) use a command like: @@ -197,7 +197,11 @@ To do the install, run "make install" and "make install.man". Make sure you have enough space in /usr/X11R6 for the install to succeed. If you want to install on a filesystem other than /usr, make a symbolic link to /usr/X11R6 -before installing. +before installing. To install the tree into a different directory than +/usr/X11R6 you can specify DESTDIR: + + make install DESTDIR= make install.man DEST- + DIR= Cross compiling is supported if the appropriate config files for your target platforms exist. You must have the compiler toolchain installed for your tar- @@ -231,7 +235,7 @@ 6. Other useful make targets There are some other useful targets defined in the top level Makefile of -X11R6.8: +X11R6.8.2: o Everything after a make World, make Everything does everything a make World does, except the cleaning of the tree. It is a way to quickly @@ -247,11 +251,11 @@ make depend make - to rebuild the X11R6.8. + to rebuild the X11R6.8.2. o distclean does a full cleaning of the source tree, removing all gener- ated files. After a make distclean, make World is the only option to - rebuild X11R6.8. + rebuild X11R6.8.2. o includes generates all generated header files and in-tree symbolic links needed by the build. These files are removed by a make clean. @@ -268,4 +272,4 @@ $Id$ -$XdotOrg: xc/BUILD,v 1.4 2004/09/08 01:54:28 kem Exp $ +$XdotOrg: xc/BUILD,v 1.4.2.3 2005/02/08 00:44:26 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/ChangeLog x11r682/xc/ChangeLog --- xc/ChangeLog 2004-09-08 03:54:28.000000000 +0200 +++ xc/ChangeLog 2005-02-09 19:03:20.000000000 +0100 @@ -1,3 +1,1754 @@ +2005-02-09 Roland Mainz + * xc/Makefile + * xc/config/cf/xorgversion.def + Bugzilla #2514 (https://bugs.freedesktop.org/show_bug.cgi?id=2514) + attachment #1879 (https://bugs.freedesktop.org/attachment.cgi?id=1879): + Bumping version to 6.8.2 + [Disclaimer: This is just a version bump, X11R6.8.2 is released when + you see the official annoucement.] + +2005-02-08 Kevin E. Martin + + * README: + * RELNOTES: + * programs/Xserver/hw/xfree86/doc/README: + * programs/Xserver/hw/xfree86/doc/RELNOTES: + * programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml: + Update formatted docs. + +2005-02-08 Roland Mainz + * xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent + Bugzilla #2485 (https://bugs.freedesktop.org/show_bug.cgi?id=2485): + Second set of release note updates for upcoming X11R6.8.2 release + per feedback from the release-wranglers mailinglist. + +2005-02-07 Kevin E. Martin + + * BUILD: + * README: + * RELNOTES: + * programs/Xserver/hw/xfree86/doc/BUILD: + * programs/Xserver/hw/xfree86/doc/DESIGN: + * programs/Xserver/hw/xfree86/doc/Install: + * programs/Xserver/hw/xfree86/doc/OS2.Notes: + * programs/Xserver/hw/xfree86/doc/README: + * programs/Xserver/hw/xfree86/doc/README.DECtga: + * programs/Xserver/hw/xfree86/doc/README.Darwin: + * programs/Xserver/hw/xfree86/doc/README.I128: + * programs/Xserver/hw/xfree86/doc/README.LynxOS: + * programs/Xserver/hw/xfree86/doc/README.NetBSD: + * programs/Xserver/hw/xfree86/doc/README.OpenBSD: + * programs/Xserver/hw/xfree86/doc/README.SCO: + * programs/Xserver/hw/xfree86/doc/README.SiS: + * programs/Xserver/hw/xfree86/doc/README.Solaris: + * programs/Xserver/hw/xfree86/doc/README.XKB-Config: + * programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing: + * programs/Xserver/hw/xfree86/doc/README.ati: + * programs/Xserver/hw/xfree86/doc/README.chips: + * programs/Xserver/hw/xfree86/doc/README.dps: + * programs/Xserver/hw/xfree86/doc/README.fonts: + * programs/Xserver/hw/xfree86/doc/README.i740: + * programs/Xserver/hw/xfree86/doc/README.i810: + * programs/Xserver/hw/xfree86/doc/README.mouse: + * programs/Xserver/hw/xfree86/doc/README.r128: + * programs/Xserver/hw/xfree86/doc/README.rendition: + * programs/Xserver/hw/xfree86/doc/README.s3virge: + * programs/Xserver/hw/xfree86/doc/RELNOTES: + * programs/Xserver/hw/xfree86/doc/Versions: + * programs/Xserver/hw/xfree86/doc/sgml/defs.ent: + * programs/xkbcomp/README.config: + * programs/xkbcomp/README.enhancing: + Update formatted docs. + +2005-02-07 Roland Mainz + * xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml + Bugzilla #2485 (https://bugs.freedesktop.org/show_bug.cgi?id=2485) + attachment #1855 (https://bugs.freedesktop.org/attachment.cgi?id=1855): + Update release notes for SiS driver. + Patch by Thomas Winischhofer . + +2005-02-07 Roland Mainz + * xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml + * xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent + Bugzilla #2485 (https://bugs.freedesktop.org/show_bug.cgi?id=2485): + First set of release note updated for upcoming X11R6.8.2 release. + +2005-02-02 Roland Mainz + * xc/config/cf/xorgversion.def + Bugzilla #2456 (https://bugs.freedesktop.org/show_bug.cgi?id=2456) + attachment #1823 (https://bugs.freedesktop.org/attachment.cgi?id=1823): + Bump version number for upcoming X11R6.8.2rc4 (release canidate 4) to + X11R6.8.1.904. + +2005-02-01 Roland Mainz + * xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c + Backout of Bugzilla #2206 (https://bugs.freedesktop.org/show_bug.cgi?id=2206) + attachment #1622 (https://bugs.freedesktop.org/attachment.cgi?id=1622) + as this patch does not work for the branch and causes build failure. + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-02-01 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h + Bugzilla #2438 (https://bugs.freedesktop.org/show_bug.cgi?id=2438) + attachment #1806 (https://bugs.freedesktop.org/attachment.cgi?id=1806): + Fix sis driver to work correctly on AMD64. + Patch by Thomas Winischhofer . + Vouchers for commit into X11R6.8.x stable branch are Kevin E. + Martin and Roland Mainz + . + +2005-02-01 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c + Bugzilla #2437 (https://bugs.freedesktop.org/show_bug.cgi?id=2437) + attachment #1805 (https://bugs.freedesktop.org/attachment.cgi?id=1805): + Fix sis driver which was reading wrong data from BIOS image. + Patch by Thomas Winischhofer . + Vouchers for commit into X11R6.8.x stable branch are Kevin E. + Martin and Roland Mainz + . + +2005-02-01 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h + * xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c + * xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c + Bugzilla #825 (https://bugs.freedesktop.org/show_bug.cgi?id=825) + attachment #956 (https://bugs.freedesktop.org/attachment.cgi?id=956): + Fix build problems on Linux/SPARC. + Patch by Jeremy Huddleston . + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-02-01 Alexander Gottwald + * xc/config/cf/cygwin.cf + Bugzilla #1393 (https://bugs.freedesktop.org/show_bug.cgi?id=1393) + attachment #1801 (https://bugs.freedesktop.org/attachment.cgi?id=1801): + Move xorg version numbers to separate config file (committing the + missing parts from attachment #1188, the diff was approved but the + changes were accidently never commited to "cygwin.cf"... ;-(). + +2005-02-01 Roland Mainz + * xc/programs/xmore/xmore.man + * xc/programs/xmore/xmore.sgml + Bugzilla #2415 (https://bugs.freedesktop.org/show_bug.cgi?id=2415) + attachment #1786 (https://bugs.freedesktop.org/attachment.cgi?id=1786): + Fix formatting problem in the xmore(1x) manual page. + Patch by Matthieu Herrb and Roland Mainz + . + Approved in the 2005-01-31 Xorg release-wranglers phone call (the + xmore.man diff is an automatic update from the DocBook--->man + conversion). + +2005-02-01 Roland Mainz + * xc/programs/xrx/plugin/include/npapi.h + * xc/programs/xrx/xnest-plugin/XnestDis.c + Bugzilla #2386 (https://bugs.freedesktop.org/show_bug.cgi?id=2386) + attachment #1766 (https://bugs.freedesktop.org/attachment.cgi?id=1766): + Fix build bustage on MacOSX/*BSD and AIX platforms (1:1 port of the + build bustage fixes from trunk). + Patch by Dan McNichol and Torrey T. + Lyons . + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-02-01 Roland Mainz + * xc/config/cf/X11.tmpl + Bugzilla #2410 (https://bugs.freedesktop.org/show_bug.cgi?id=2410) + attachment #1782 (https://bugs.freedesktop.org/attachment.cgi?id=1782): + Build the XRX plugin only if the system supports shared libraries + (which is a requirement for this plugin). + Patch by Matthieu Herrb . + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-02-01 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c + Bugzilla #2252 (https://bugs.freedesktop.org/show_bug.cgi?id=2252) + attachment #1791 (https://bugs.freedesktop.org/attachment.cgi?id=1791): + Fix option dontVTSwitch under *BSD, when XKB is disabled. + Patch by Matthieu Herrb . + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-02-01 Roland Mainz + * xc/nls/Compose/pt_BR.UTF-8 + * xc/nls/XLC_LOCALE/pt_BR.UTF-8 + Bugzilla #2400 (https://bugs.freedesktop.org/show_bug.cgi?id=2400) + attachment #1762 (https://bugs.freedesktop.org/attachment.cgi?id=1762): + Fix build bustage caused by broken patch for brazillian locale support + (see Bugzilla #1896). + Patch by Kevin E. Martin . + Approved in the 2005-01-31 Xorg release-wranglers phone call. + +2005-01-25 Roland Mainz + * xc/config/cf/xorgversion.def + Bugzilla #2378 (https://bugs.freedesktop.org/show_bug.cgi?id=2378) + attachment #1747 (https://bugs.freedesktop.org/attachment.cgi?id=1747): + Bump version number for upcoming X11R6.8.2rc3 (release canidate 3) to + X11R6.8.1.903. + +2005-01-24 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c + Bugzilla #1424 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1424) + attachment #1209 (https://bugs.freedesktop.org/attachment.cgi?id=1209): + Fix problems with RENDER extension accerlation on R100 cards (via + pre-rendering small texture). + Patch by Matthias Hopf . + +2005-01-24 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c + Bugzilla #2322 (https://freedesktop.org/bugzilla/show_bug.cgi?id=2322) + attachment #1709 (https://bugs.freedesktop.org/attachment.cgi?id=1709): + Fix corruption of PCI config BAR1 of native PCI-Express boards + on 64-bit platforms. + Patch by Michael Yaroslavtsev . + +2005-01-24 Roland Mainz + * xc/nls/compose.dir + * xc/nls/locale.dir + * xc/nls/Compose/Imakefile + * xc/nls/Compose/pt_BR.UTF-8 + * xc/nls/XI18N_OBJS/Imakefile + * xc/nls/XI18N_OBJS/pt_BR.UTF-8 + * xc/nls/XLC_LOCALE/Imakefile + * xc/nls/XLC_LOCALE/pt_BR.UTF-8 + * xc/programs/Xserver/XpConfig/Imakefile + Bugzilla #1896 (https://bugs.freedesktop.org/show_bug.cgi?id=1896) + attachment #1675 (https://bugs.freedesktop.org/attachment.cgi?id=1675): + Add support for pt_BR.UTF-8 locale. + Patch by Gustavo Noronha Silva, Branden Robinson, Julien Lafon. + +2005-01-24 Roland Mainz + * xc/lib/font/util/Imakefile + * xc/lib/font/util/utilbitmap.c + Bugzilla #1804 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1804) + attachment #1269 (https://bugs.freedesktop.org/attachment.cgi?id=1269): + Fix build failure (caused by missing symbols such as |TwoByteSwap|) + when linking the FreeType module and the FreeType library both + statically info the Xserver. + +2005-01-24 Roland Mainz + * xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c + Bugzilla #2361 (https://bugs.freedesktop.org/show_bug.cgi?id=2361) + attachment #1739 (https://bugs.freedesktop.org/attachment.cgi?id=1739): + Fix radeon m7 driver lock-ups on glxgears&co. + Patch by Dave Airlie . + +2005-01-24 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c + Bugzilla #2329 (https://bugs.freedesktop.org/show_bug.cgi?id=2329) + attachment #1717 (https://bugs.freedesktop.org/attachment.cgi?id=1717): + Unmap XCursor AGP memory on VT switch to prevent system from lockup. + Patch by Matthias Hopf . + +2005-01-23 Roland Mainz + * xc/config/cf/X11.tmpl + * xc/programs/Imakefile + * xc/programs/xrx/Imakefile + * xc/programs/xrx/plugin/Imakefile + * xc/programs/xrx/plugin/Main.c + * xc/programs/xrx/plugin/PProcess.c + * xc/programs/xrx/xnest-plugin/Imakefile + * xc/programs/xrx/xnest-plugin/NewNDest.c + * xc/programs/xrx/xnest-plugin/SetWin.c + * xc/programs/xrx/xnest-plugin/XnestDis.c + Bugzilla #1372 (https://bugs.freedesktop.org/show_bug.cgi?id=1372) + attachment #932 (https://bugs.freedesktop.org/attachment.cgi?id=932) + and + attachment #1105 (https://bugs.freedesktop.org/attachment.cgi?id=1105) + Repairing XRX/Broadway support. + This patch fixes both the libxrx.so plugin and the Xnest-based + libxrxnest.so plugin and making them compatible to newer versions + of Mozilla and removing the backwards compatibility hacks for old + Netscape3.x versions with statically linked Motif. + +2005-01-23 Roland Mainz + * xc/programs/Xserver/Xprint/spooler.c + Bugzilla #2167 (https://bugs.freedesktop.org/show_bug.cgi?id=2167) + attachment #1641 (https://bugs.freedesktop.org/attachment.cgi?id=1641): + Fix broken Solaris print queue enumeration. + +2005-01-23 Roland Mainz + * xc/programs/Xserver/Xprint/Util.c + * xc/programs/Xserver/Xprint/attributes.c + * xc/programs/Xserver/Xprint/attributes.h + * xc/programs/Xserver/Xprint/ps/Ps.h + Bugzilla #2254 (https://bugs.freedesktop.org/show_bug.cgi?id=2254) + attachment #1654 (https://bugs.freedesktop.org/attachment.cgi?id=1654) + and + attachment #1659 (https://bugs.freedesktop.org/attachment.cgi?id=1659) + Fix for gcc4.0 build failure (including removing |ExecCommand()| - + the function has no consumer and can safely be removed). + Patch by Egbert Eich and Roland Mainz + . + +2005-01-23 Roland Mainz + * xc/programs/Xserver/Xprint/etc/init.d/xprint.cpp + Bugzilla #2240 (https://bugs.freedesktop.org/show_bug.cgi?id=2240) + attachment #1642 (https://bugs.freedesktop.org/attachment.cgi?id=1642): + Fix incorrect usage of /usr/bin/tr in startup script (the used + "[\n]" is neither correct or portable, using "\n" seems to be + sufficient (this fixes various "random" issues, including + including Debian bug #258419 and Debian bug #264983). + Patch by Drew Parsons . + +2005-01-23 Roland Mainz + * xc/config/cf/xorg.cf + Bugzilla #2264 (https://bugs.freedesktop.org/show_bug.cgi?id=2264) + attachment #1665 (https://bugs.freedesktop.org/attachment.cgi?id=1665): + - Don't build tdfx DRI driver on any platform but x86 and AXP + as therequired Glide3 lib is only available there (if at all). + - Readability fixes. + Patch by Egbert Eich . + +2005-01-23 Roland Mainz + * xc/config/cf/xorg.cf + Bugzilla #2215 (https://bugs.freedesktop.org/show_bug.cgi?id=2215) + attachment #1658 (https://bugs.freedesktop.org/attachment.cgi?id=1658): + Add i810 driver for AMD64. + Patch by Kristian Høgsberg . + +2005-01-23 Roland Mainz + * xc/config/cf/xorg.cf + Bugzilla #2215 (https://bugs.freedesktop.org/show_bug.cgi?id=2215) + attachment #1629 (https://bugs.freedesktop.org/attachment.cgi?id=1629): + Cleanup and enhancements in xc/config/cf/xorg.cf + Patch by Egbert Eich . + +2005-01-23 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/chips/chips.man + Bugzilla #2261 (https://bugs.freedesktop.org/show_bug.cgi?id=2261) + attachment #1666 (https://bugs.freedesktop.org/attachment.cgi?id=1666): + Update manual page to explain the FpMode option. + Patch by Egbert Eich . + +2005-01-12 Roland Mainz + * xc/config/cf/xorgversion.def + Bugzilla #2272 (https://bugs.freedesktop.org/show_bug.cgi?id=2272) + attachment #1672 (https://bugs.freedesktop.org/attachment.cgi?id=1672): + Bump version number for upcoming X11R6.8.2rc2 (release canidate 2) to + X11R6.8.1.902. + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xwin/ChangeLog + * xc/programs/Xserver/hw/xwin/winkeybd.h + * xc/programs/Xserver/hw/xwin/winkeyhook.c + * xc/programs/Xserver/hw/xwin/winmultiwindowclass.c + * xc/programs/Xserver/hw/xwin/winmultiwindowwindow.c + * xc/programs/Xserver/hw/xwin/winmultiwindowwm.c + * xc/programs/Xserver/hw/xwin/winwndproc.c + Bugzilla #1831 (https://bugs.freedesktop.org/show_bug.cgi?id=1831) + attachment #1656 (https://bugs.freedesktop.org/attachment.cgi?id=1656): + CGYWIN update, including the following fixes: + - Make keyhook feature work in multiwindowmode too + - Hook windows keys + - Fix crash with non-nullterminated strings (reported by Øyvind Harboe) + - From Bug #1945: Stop unnecessary reordering. + Patch by Alexander Gottwald and Kensuke Matsuzaki. + +2005-01-12 Roland Mainz + * xc/config/cf/sun.cf + * xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile + * xc/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S + Bugzilla #2096 (https://bugs.freedesktop.org/show_bug.cgi?id=2096) + attachment #1565 (https://bugs.freedesktop.org/attachment.cgi?id=1565): + Fix Solaris/SPARC build failure caused by missing assembler code + for this platform. + Patch by Alan Coopersmith + +2005-01-12 Roland Mainz + * xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.c + * xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_swtcl.c + * xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_tcl.c + Bugzilla #2110 (https://bugs.freedesktop.org/show_bug.cgi?id=2110) + attachment #1569 (https://bugs.freedesktop.org/attachment.cgi?id=1569): + Fix build bustage in MESA/DRI code with gcc 2.96. + Patch by Kevin E. Martin + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/compiler.h + Bugzilla #2114 (https://bugs.freedesktop.org/show_bug.cgi?id=2114) + attachment #1576 (https://bugs.freedesktop.org/attachment.cgi?id=1576): + Fix build bustage on PPC64 with Linux 2.6.x kernel headers, + use system definition of |eieio()|. + Originally Gentoo bug #66223. + Patch by Tim Yamin and Donnie Berkholz + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/ddc/edid.h + Bugzilla #1490 (https://bugs.freedesktop.org/show_bug.cgi?id=1490) + attachment #1576 (https://bugs.freedesktop.org/attachment.cgi?id=1576): + Refix for previous patch (updating to EDID 1.3), this syncs the + X11R6.8.x stable branch with todays Xorg trunk. + Patch by Jay Cotton , Alan Coopersmith + and Egbert Eich . + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c: + Bugzilla #2189 (https://bugs.freedesktop.org/show_bug.cgi?id=2189) + attachment #1610 (https://bugs.freedesktop.org/attachment.cgi?id=1610): + Fix formatting of XtNextEvent manual page. + Patch by Matthieu Herrb + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c: + Bugzilla #1488 (https://bugs.freedesktop.org/show_bug.cgi?id=1488) + attachment #1607 (https://bugs.freedesktop.org/attachment.cgi?id=1607): + Fix crash on i830 during startup. + Patch by Eric Anholt + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c: + Bugzilla #2252 (https://bugs.freedesktop.org/show_bug.cgi?id=2252) + attachment #1653 (https://bugs.freedesktop.org/attachment.cgi?id=1653): + Make option 'DontVTSwitch' work again with kbd driver + under Linux. + The kbd driver now calls the OS layer to handle special + keys. Possibly other special keys and other OSes need to + be looked at also. + Patch by Egbert Eich . + +2005-01-12 Roland Mainz + * xc/programs/xterm/INSTALL + * xc/programs/xterm/MANIFEST + * xc/programs/xterm/Makefile.in + * xc/programs/xterm/Tekproc.c + * xc/programs/xterm/VTPrsTbl.c + * xc/programs/xterm/VTparse.def + * xc/programs/xterm/VTparse.h + * xc/programs/xterm/XTerm.ad + * xc/programs/xterm/aclocal.m4 + * xc/programs/xterm/button.c + * xc/programs/xterm/charclass.c + * xc/programs/xterm/charproc.c + * xc/programs/xterm/configure + * xc/programs/xterm/configure.in + * xc/programs/xterm/ctlseqs.ms + * xc/programs/xterm/cursor.c + * xc/programs/xterm/doublechr.c + * xc/programs/xterm/fontutils.c + * xc/programs/xterm/fontutils.h + * xc/programs/xterm/input.c + * xc/programs/xterm/main.c + * xc/programs/xterm/main.h + * xc/programs/xterm/menu.c + * xc/programs/xterm/menu.h + * xc/programs/xterm/misc.c + * xc/programs/xterm/os2main.c + * xc/programs/xterm/plink.sh + * xc/programs/xterm/precompose.c + * xc/programs/xterm/print.c + * xc/programs/xterm/ptyx.h + * xc/programs/xterm/resize.c + * xc/programs/xterm/screen.c + * xc/programs/xterm/scrollbar.c + * xc/programs/xterm/testxmc.c + * xc/programs/xterm/trace.c + * xc/programs/xterm/util.c + * xc/programs/xterm/uxterm + * xc/programs/xterm/version.h + * xc/programs/xterm/xstrings.c + * xc/programs/xterm/xterm.h + * xc/programs/xterm/xterm.log.html + * xc/programs/xterm/xterm.man + * xc/programs/xterm/xterm_io.h + * xc/programs/xterm/xtermcfg.hin + * xc/programs/xterm/unicode/README + * xc/programs/xterm/unicode/make-precompose.sh + * xc/programs/xterm/unicode/precompose.c.head + Bugzilla #1979 (https://bugs.freedesktop.org/show_bug.cgi?id=1979) + attachment #1639 (https://bugs.freedesktop.org/attachment.cgi?id=1639): + Update xterm from version #196 to version #197: + - modify configure script to remove empty "-DPROJECTROOT=" + definition which resulted unusable values for luit's default path. + - update precompose.c based on Unicode 4.0.1 + - several minor fixes based on Intel compiler warnings. + - change default translations so a BtnDown which is not recognized + is simply ignored rather than emitting a bell. That makes it less + obtrusive when the user tries to use a mouse which provides more + capabilities than the X mouse driver supports, e.g., one with a + horizontal scroll wheel (Debian #265133). + - note in xterm's manpage that translations is not specific to xterm + (Debian #278897). + - modify uxterm script to use locale program to verify if the + derived locale is installed (Debian #246398). + - correct font handling for active icon when in UTF-8 mode (report + by Paolo Liberatore). + - make active-icon and toolbar configurations work together. + - modify the criteria for disowning primary selection. Previously, + this happened anytime the cursor was moved before the end of the + selection. That would ensure that any insert/delete of char or + line, as well as scrolling, would disown the selection. The new + criteria change this to checking if the operations would modify + the data which is highlighted (Debian #277832). + - reimplement DECALN with functions for vt420 rectangles, fixes + selection for this case. + - implement vt420 rectangle operations. + - add parsing, for debug/test of vt220 soft-fonts. + - add menu entry, actions and escape sequence to allow + enabling/disabling toolbars at runtime. + - improve rendering for Xft, allow it to draw non-linedrawing + characters such as "pi", which were drawn from internal tables + with patch #180 (Freedesktop.org Bugzilla #1260). + - add configure option --enable-mini-luit, ifdef'd the mini-luit + feature with OPT_MINI_LUIT. + - add mini-luit feature, which supports Latin9 directly rather than + via luit, provided that Unicode fonts are used (Freedesktop.org + Bugzilla #1571, request by Stefan Dirsch, patch by Michael + Schroeder). + - for Linux, if IUTF8 is defined, e.g., on recent 2.6.x kernels, set + the corresponding flag for the slave pty, to enable UTF-8 + interpretation of backspace in cooked mode (Freedesktop.org + Bugzilla #1578, request by Stefan Dirsch). + - modify faceSize resource to use a floating-point internal value + (adapted from patch by Sam Stephenson). + - correct handling selection of tabs over cleared space in UTF-8 + mode. In this special case, xterm represents the whitespace with a + null rather than a space character (Debian #276447). + - amend fix for infinite loop from patch #192 to check if there + is wrapped text to output in a following iteration (Debian + #273202). + - fixes ifdef'd with __INTERIX to allow building with Interix + (Windows Services for UNIX) 3.5 using the xlibs libraries from + freedesktop.org (patch by Min Sik Kim). + - amend solution for Debian #252873, #260471 from patch #194 by + making the cursor not explicitly colored if only the foreground + color is set, and the cursor is on a blank space (Debian #275473). + - correct logic for send/receive mode (SRM) with regard to control + characters. + - fix masking of invisible text in wide-character mode, which did + not work for line-drawing characters. + - incorporate CF_XOPEN_SOURCE into configure script, replacing + CF_GNU_SOURCE. + Patch by Thomas Dickey . + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c: + Bugzilla #2211 (https://bugs.freedesktop.org/show_bug.cgi?id=2211) + attachment #1627 (https://bugs.freedesktop.org/attachment.cgi?id=1627): + xorgconfig default keyboard model outdated (should be pc105, + not pc101/pc102). + Patch by Alan Coopersmith + +2005-01-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c + Bugzilla #2206 (https://bugs.freedesktop.org/show_bug.cgi?id=2206) + attachment #1622 (https://bugs.freedesktop.org/attachment.cgi?id=1622): + Fix missing return value in xf86config. + Patch by Egbert Eich . + +2005-01-12 Roland Mainz + * xc/include/Xos.h + * xc/include/Xthreads.h + Bugzilla #2207 (https://bugs.freedesktop.org/show_bug.cgi?id=2207) + attachment #1623 (https://bugs.freedesktop.org/attachment.cgi?id=1623): + Replace usag of CPP symbol "linux" with "__linux__" to get the build + working with gcc4.0 again. + Patch by Egbert Eich . + +2005-01-12 Roland Mainz + * xc/programs/Xserver/Xprint/attributes.c + Bugzilla #2205 (https://bugs.freedesktop.org/show_bug.cgi?id=2205) + attachment #1621 (https://bugs.freedesktop.org/attachment.cgi?id=1621): + Fix missing return value in Xprint's resource handling. + Patch by Egbert Eich . + +2004-12-16 Roland Mainz + * xc/config/cf/xorgversion.def + Bugzilla #2086 (https://bugs.freedesktop.org/show_bug.cgi?id=2086) + attachment #1557 (https://bugs.freedesktop.org/attachment.cgi?id=1557): + Bump version number for upcoming X11R6.8.2rc1 (release canidate 1) to + X11R6.8.1.901. + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86Init.c + Bugzilla #2086 (https://bugs.freedesktop.org/show_bug.cgi?id=2086) + attachment #1556 (https://bugs.freedesktop.org/attachment.cgi?id=1556): + Fix problems with printing the release candidate version + number for point releases. + Patch by Kevin E. Martin + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/ddc/edid.h + * xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c + * xc/programs/Xserver/hw/xfree86/ddc/print_edid.c + Bugzilla #1490 (https://bugs.freedesktop.org/show_bug.cgi?id=1490) + attachment #1122 (https://bugs.freedesktop.org/attachment.cgi?id=1122): + Updating to EDID 1.3. + Patch by Jay Cotton and Egbert Eich + . + +2004-12-16 Roland Mainz + * xc/lib/Xpm/Imakefile + * xc/extras/Xpm/lib/Attrib.c + * xc/extras/Xpm/lib/CrBufFrI.c + * xc/extras/Xpm/lib/CrDatFrI.c + * xc/extras/Xpm/lib/RdFToBuf.c + * xc/extras/Xpm/lib/RdFToI.c + * xc/extras/Xpm/lib/WrFFrBuf.c + * xc/extras/Xpm/lib/WrFFrI.c + * xc/extras/Xpm/lib/XpmI.h + * xc/extras/Xpm/lib/create.c + * xc/extras/Xpm/lib/data.c + * xc/extras/Xpm/lib/hashtab.c + * xc/extras/Xpm/lib/misc.c + * xc/extras/Xpm/lib/parse.c + * xc/extras/Xpm/lib/scan.c + Bugzilla #1920 (https://bugs.freedesktop.org/show_bug.cgi?id=1920) + attachment #1514 (https://bugs.freedesktop.org/attachment.cgi?id=1514): + libXpm security fixes for CAN-2004-0914. + Patch by Thomas Biege. + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c + Bugzilla #1383 (https://bugs.freedesktop.org/show_bug.cgi?id=1383) + attachment #902 (https://bugs.freedesktop.org/attachment.cgi?id=902): + Fix typo in PCI code for Intel 460gx in X server, which causes a SEGV. + Patch by H.J.Lu + +2004-12-16 Roland Mainz + * xc/programs/Xserver/fb/fbwindow.c + * xc/programs/Xserver/hw/xfree86/xaa/xaaWrapper.c + * xc/programs/Xserver/mi/micmap.c + Bugzilla #1912 (https://bugs.freedesktop.org/show_bug.cgi?id=1220) + attachment #980 (https://bugs.freedesktop.org/attachment.cgi?id=980): + Fix (scrolling) performance problems caused by PseudoColor emulation layer. + Patch by Egbert Eich + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + Bugzilla #1912 (https://bugs.freedesktop.org/show_bug.cgi?id=1220) + attachment #980 (https://bugs.freedesktop.org/attachment.cgi?id=980): + Fix garbage screen on radeon cards which may appear after a system + suspend/resume cycle. + Patch by Matthias Hopf + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h + Bugzilla #1912 (https://bugs.freedesktop.org/show_bug.cgi?id=1912) + attachment #1433 (https://bugs.freedesktop.org/attachment.cgi?id=1433): + Fix hard lockup on Radeon 7000 + SMP due dynamic clock. + Patch by Alex Deucher . + +2004-12-16 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c: + Bugzilla #1890 (https://bugs.freedesktop.org/show_bug.cgi?id=1890) + attachment #1331 (https://bugs.freedesktop.org/attachment.cgi?id=1331): + Apply Debian patch to re-POST via VBE if driver thinks it has no + video memory (a symptom of incompletely coming up from D3 power + state), which fixes some Dell laptops + This enables resume from suspend level S3 by asking the Radeon chip if it + thinks it has no memory. If so, the card is re-POSTed via the int10 + interface. Reportedly enables the driver to work for this type of + suspend/resume cycle on Dell D600 laptops (Dell D800s as well, if the video + BIOS is patched to 4.28.20.31.C1 or later). See Debian Bug #234575. + This patch by Emmanuel Thome and Ole Rohne. + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c + Bugzilla #1651 (https://bugs.freedesktop.org/show_bug.cgi?id=1651) + attachment #1484 (https://bugs.freedesktop.org/attachment.cgi?id=1484): + - set default XkbModel to pc105 (like legacy keyboard driver did) + - fix autorepeat + Patch by Matthieu Herrb and Petter Urkedal + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + Bugzilla #1881 (https://bugs.freedesktop.org/show_bug.cgi?id=1881) + attachment #1322 (https://bugs.freedesktop.org/attachment.cgi?id=1322): + Fix typo in radeon driver + Patch by Daniel Stone + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + Bugzilla #1559 (https://bugs.freedesktop.org/show_bug.cgi?id=1559) + attachment #1133 (https://bugs.freedesktop.org/attachment.cgi?id=1133): + Fix display detection regression on Radeon Mobile. + Patch by HUI YU + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + Bugzilla #1306 (https://bugs.freedesktop.org/show_bug.cgi?id=1306) + attachment #1292 (https://bugs.freedesktop.org/attachment.cgi?id=1292): + + This patch should work around the panel timing params not being initialized. + Here's the problem: + + Previously, the PanelXRes and PanelYRes were either read from the BIOS or were + left as 0 (if no BIOS was detected). Then, in RADEONUpdatePanelSize(), the max + panel size was found and the timing parameters were initialized, which worked + fine for this ppc system. + + Now, the PanelXRes and PanelYRes are either read from the BIOS or are read from + the registers. Note that the other timing parameters (in particular the + DotClock) are not initialized when reading from the registers. Then, when + RADEONUpdatePanelSize() is called, the max panel size is already set, so none + of the other timing parameters are initialized here either (or anywhere else + for that matter), which appears to be why the new code fails for this ppc + system. + + The patch changes the test from < to <= in RADEONUpdatePanelSize() and then + tests to make sure that only the first set of timings for the panel size read + from the registers will be used -- this mimics the way the previous code + worked. The only problem with this code occurs when the registers hold invalid + panel size params, which do not match any of the monitor's DDC info. This + should never happen; however, if it does, then the only solution in this case + is to explicitly set the panel size in the config file. + + Patch by Kevin E. Martin + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c + Bugzilla #1306 (https://bugs.freedesktop.org/show_bug.cgi?id=1306) + attachment #1291 (https://bugs.freedesktop.org/attachment.cgi?id=1291): + Fix SEGV in "radeon" driver. + Patch by Kevin E. Martin + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h + Bugzilla #1985 (https://bugs.freedesktop.org/show_bug.cgi?id=1985) + attachment #1504 (https://bugs.freedesktop.org/attachment.cgi?id=1504) + sync to 12/08/04 version of Nvidia driver from Mark Vojkovich, + including these fixes since last sync: + Fix some DAC/Graphics memory contention issues on newer + NVIDIA chips (specifically, NV40). + More PCI IDs. + Also, I've had trouble getting some panels to work + automagically so I expose an FPTweak option to let the user + adjust a troublesome register. + +2004-12-15 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx1_video.c + * xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx2_video.c + Bug #1937 (https://bugs.freedesktop.org/show_bug.cgi?id=1937) + attachment #1396 (https://bugs.freedesktop.org/attachment.cgi?id=1396): + XV support doesn't depend on 2D acceleration any more. This patch + removes this limitation from the NSC driver. This is a patch that + I have committed to XFree86 a while ago but never ported over to + X.Org. + Patch by Egbert Eich and Matthieu + Herrb + +2004-12-15 Alexander Gottwald + * xc/programs/Xserver/Imakefile + * xc/programs/Xserver/hw/xwin/ChangeLog + * xc/programs/Xserver/hw/xwin/Imakefile + * xc/programs/Xserver/hw/xwin/InitOutput.c + * xc/programs/Xserver/hw/xwin/XWin.rc + * xc/programs/Xserver/hw/xwin/win.h + * xc/programs/Xserver/hw/xwin/winclipboardthread.c + * xc/programs/Xserver/hw/xwin/winclipboardwndproc.c + * xc/programs/Xserver/hw/xwin/winclipboardxevents.c + * xc/programs/Xserver/hw/xwin/winconfig.c + * xc/programs/Xserver/hw/xwin/wincreatewnd.c + * xc/programs/Xserver/hw/xwin/winmessages.h + * xc/programs/Xserver/hw/xwin/winmouse.c + * xc/programs/Xserver/hw/xwin/winmultiwindowwm.c + * xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c + * xc/programs/Xserver/hw/xwin/winprocarg.c + * xc/programs/Xserver/hw/xwin/winresource.h + * xc/programs/Xserver/hw/xwin/winshadddnl.c + * xc/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c + * xc/programs/Xserver/hw/xwin/winwndproc.c + Bug #1831 (https://bugs.freedesktop.org/show_bug.cgi?id=1831) + attachment #1547 (https://bugs.freedesktop.org/attachment.cgi?id=1547) + attachment #1548 (https://bugs.freedesktop.org/attachment.cgi?id=1548): + Cygwin/X patches since 6.8.1, including: + - Support for placing the mainwindow by coordinates and monitor + - Setting default cursor in multiwindow mode + - Added keyboardlayout "French (Switzerland)" + - Fixed crashes after switching videomodes + - Added support for reading the fontpath from /etc/X11/font-dirs + - Make -multiplemonitors for multiwindow modes + - Added support for mice with more than 3 buttons + - Fixed another clipboard bug with Unicode applications + +2004-12-15 Egbert Eich + + * programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c: + (xorgProbe460GX), (xf86PreScan460GX): + * programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h: + * programs/Xserver/hw/xfree86/os-support/bus/Imakefile: + * programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c: + (xorgProbeE8870), (xf86PreScanE8870): + * programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h: + * programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c: + * programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c: + (xf86PreScanZX1): + * programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h: + * programs/Xserver/hw/xfree86/os-support/linux/Imakefile: + * programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c: + (OS_PROBE_PCI_CHIPSET): + * programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c: + (ia64ScanPCIWrapper): + * programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h: + Adding support for OS dependent probing of IA64 chipsets. + Not all IA64 chipsets can be probed without OS support as + probing them is only possible using ACPI. One example of + this are the HP ZX1/2 chipsets: previously the code assumed + that these chips were present when no other of the known + chipsets could be probed. This assumption brought SGI Altrix + machines with 64 CPUs to a grinding halt. + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/i810/common.h + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c + * xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h + * xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h + * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c + * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c + Bug #1944 (https://bugs.freedesktop.org/show_bug.cgi?id=1944) + attachment #1403 (https://bugs.freedesktop.org/attachment.cgi?id=1403): + Various I8xx driver fixes, including: + - Fixed server crash on reset when a structure allocated in + PreInit() was freed on CloseScreen(). + - Fixed ring buffer lock ups that happened because the structure + that contained ringbuffer data was not zeroed after allocation. + - Fixed numerous warnings due to signed unsigned comparisons. + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c: + Bug #1889 (https://bugs.freedesktop.org/show_bug.cgi?id=1889) + attachment #1330 (https://bugs.freedesktop.org/attachment.cgi?id=1330): + Retry CCE idle commands until the (higher) timeout is reached, and + properly stop the engine if we totally fail -- gets rid of serious + performance issues and lockups with r128 DRI (see also Debian bug + reports #223089, #236187, #236373, #243436). + Patch by Daniel Jacobowitz. + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c + * xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c + Bug #1888 (https://bugs.freedesktop.org/show_bug.cgi?id=1888) + attachment #1329 (https://bugs.freedesktop.org/attachment.cgi?id=1329): + Allow pitches with a granularity of 32, rather than 64, because some + clamshell iBooks have 800-byte pitches. Change Xv allocation + granularity to 8 bytes, rather than 16 bytes, also (see Debian + #148775). + Patch by Branden Robinson and Dagfinn Ilmari Mannsåker. + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c + Bug #1886 (https://bugs.freedesktop.org/show_bug.cgi?id=1886) + attachment #1327 (https://bugs.freedesktop.org/attachment.cgi?id=1327): + Disable interrupt handling after the DRM handler has been removed, + preventing lockups. + Patch by Daniel Stone + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile + * xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c + Bug #1962 (https://bugs.freedesktop.org/show_bug.cgi?id=1962) + attachment #1423 (https://bugs.freedesktop.org/attachment.cgi?id=1423): + Avoid PIO access on IA64. Some IA64 machine check if legacy ports + outside the VGA range are accessed. The ATi driver however does + this to probe for ISA Mach8/32/64. + Since no IA64 has ISA slots this restriction should not be + relevant to the user. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c + Bug #1928 (https://bugs.freedesktop.org/show_bug.cgi?id=1928) + attachment #1387 (https://bugs.freedesktop.org/attachment.cgi?id=1387): + Added some early bailouts to atiprobe if PCI structure pointer is + NULL to prevent sig11. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c + * xc/programs/Xserver/hw/xfree86/drivers/ati/ativga.c + Bug #591 (https://bugs.freedesktop.org/show_bug.cgi?id=591) + attachment #308 (https://bugs.freedesktop.org/attachment.cgi?id=308): + Fix video timing problems with Sony PCG-C1VN Vaio Picturebook notebook + && co. + Patch by Marc Aurele La France + +2004-12-14 Roland Mainz + * xc/doc/man/general/Imakefile + * xc/doc/man/general/Xprint.html + * xc/doc/man/general/Xprint.man + * xc/doc/man/general/Xprint.sgml + * xc/programs/Xserver/Xprint/Imakefile + * xc/programs/Xserver/Xprint/Xprint.html + * xc/programs/Xserver/Xprint/Xprint.man + * xc/programs/Xserver/Xprint/Xprint.sgml + * xc/programs/Xserver/Xprint/Xprt.html + * xc/programs/Xserver/Xprint/Xprt.man + * xc/programs/Xserver/Xprint/Xprt.sgml + Bug #811 (https://bugs.freedesktop.org/show_bug.cgi?id=811) + attachment #1374 (https://bugs.freedesktop.org/attachment.cgi?id=1374), + attachment #1379 (https://bugs.freedesktop.org/attachment.cgi?id=1379), + attachment #1431 (https://bugs.freedesktop.org/attachment.cgi?id=1431): + Add the missing manual page for the Xprt server (and move the Xprint(7) + to it's correct location). + Authors: Alan Coopersmith, Giuseppe Ghibò, Thomas Gilg, Jay Hobson, + Julien Lafon, Masaki Katakai, Roland Mainz, Simon Montagu, Drew Parsons. + +2004-12-14 Roland Mainz + * xc/doc/man/X11/XGetWProp.man + Bug #2056 (https://bugs.freedesktop.org/show_bug.cgi?id=2056) + attachment #1515 (https://bugs.freedesktop.org/attachment.cgi?id=1515): + Fix the missing XChangeProperty() prototype in man page's + synopsis section. + Patch by Matthieu Herrb + +2004-12-14 Roland Mainz + * xc/config/docbook/docbookconv.sh + * xc/doc/hardcopy/XPRINT/Xprint_FAQ.html + * xc/doc/hardcopy/XPRINT/Xprint_FAQ.txt + * xc/doc/hardcopy/XPRINT/Xprint_FAQ.xml + * xc/programs/Xserver/Xprint/Xprint.html + * xc/programs/Xserver/Xprint/Xprint.man + * xc/programs/Xserver/Xprint/Xprint.sgml + * xc/programs/xlsfonts/xlsfonts.man + * xc/programs/xlsfonts/xlsfonts.sgml + * xc/programs/xphelloworld/xphelloworld/xphelloworld.html + * xc/programs/xphelloworld/xphelloworld/xphelloworld.man + * xc/programs/xphelloworld/xphelloworld/xphelloworld.sgml + * xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.html + * xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.man + * xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.sgml + * xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.html + * xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.man + * xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.sgml + * xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.html + * xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.man + * xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.sgml + * xc/programs/xplsprinters/xplsprinters.html + * xc/programs/xplsprinters/xplsprinters.man + * xc/programs/xplsprinters/xplsprinters.sgml + * xc/programs/xprehashprinterlist/xprehashprinterlist.man + * xc/programs/xprehashprinterlist/xprehashprinterlist.sgml + Bugzilla #1557 (https://bugs.freedesktop.org/show_bug.cgi?id=1557) + attachment #1032 (https://bugs.freedesktop.org/attachment.cgi?id=1391): + Update DocBook SGML+XML manual pages and docmentation + and the in-tree copies of the generated files (*.man, *.html) to + get them properly working with newer versions of the tools within the + Xorg tree. + Patch by Roland Mainz, Drew Parsons, Julien Lafon, Giuseppe Ghibò + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml + Bug #1932 (https://bugs.freedesktop.org/show_bug.cgi?id=1932) + attachment #1391 (https://bugs.freedesktop.org/attachment.cgi?id=1391 + with typo fixed): + Added explanation for DESTDIR to install to a different directory + than /. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile: + Bug #1987 (https://bugs.freedesktop.org/show_bug.cgi?id=1987) + attachment #1462 (https://bugs.freedesktop.org/attachment.cgi?id=1462): + HAVE_SYSV_IPC should be defined when building libc_wrapper.c on + Solaris/SVR4Architecture (otherwise some drivers like those from + Nvidia may not work). + Patch by Alan Coopersmith + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c + Bug #1965 (https://bugs.freedesktop.org/show_bug.cgi?id=1965) + attachment #1425 (https://bugs.freedesktop.org/attachment.cgi?id=1425): + Avoid recursive calls of xf86scanpci(). This function normally + detects that it has been called before by checking if the PCI + structure is filled out. So far if this was not the case + (because PCI probing has failed for some reason) the function + is traversed again. With the chipset specific PCI bus probing + this can lead to an endless recursive loop as the post-probing + code calls xf86scanpci() from within this function. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c + Bug #1963 (https://bugs.freedesktop.org/show_bug.cgi?id=1963) + attachment #1424 (https://bugs.freedesktop.org/attachment.cgi?id=1424): + The OS specific PCI code for Linux worked only if bus 0 + was populated as it checked for the presence of /proc/bus/pci/00. + Fixed to check for /proc/bus/pci/ instead. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86Events.c + * xc/programs/Xserver/hw/xfree86/common/xf86Init.c + Bug #1933 (https://bugs.freedesktop.org/show_bug.cgi?id=1933) + attachment #1392 (https://bugs.freedesktop.org/attachment.cgi?id=1392): + Improving DPMS handling on VT swich and server + termination/abort: previous version called the driver directly and + too late. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86Configure.c + Bug #1931 (https://bugs.freedesktop.org/show_bug.cgi?id=1931) + attachment #1390 (https://bugs.freedesktop.org/attachment.cgi?id=1390): + Removing unused DDC sections that caused misinterpretation of + DDC data due to a missing break statement in a switch. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c + Bug #1927 (https://bugs.freedesktop.org/show_bug.cgi?id=1927) + attachment #1386 (https://bugs.freedesktop.org/attachment.cgi?id=1386): + Fixed typo in |ix86PciSelectCfgmech()|: #if <-> #ifdef. + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/Xserver/Xext/xf86vmode.c + Bug #1552 (https://bugs.freedesktop.org/show_bug.cgi?id=1552) + attachment #1026 (https://bugs.freedesktop.org/attachment.cgi?id=1026): + + Currently, when a screensaver kicks in, it calls xf86GetModeLine() + which causes the Vidmode extension to write out a debugging log + message of what the current modeline is. These messages are + generally only useful to an X11 developer who is debugging the + extension itself, or to an application developer who is developing + an application which uses the vidmode extension to get/set the video + mode, however they're not very useful for end users. + + The current default Xvidmode verbosity causes the X server to write + overly detailed video modeline information to the X server log file + whenever any application uses the extension to get, set, or delete + modelines. This causes a problem for laptop users on battery power + with their hard disks set to power saving mode, because the hard disk + will power down, then later the screensaver kicks in, which calls + xf86GetModeLine(), which causes the log message to get written out, + which causes the hard disk to be powered back up. + + Having these messages off by default solves this problem for laptop + users, and seems to make the most sense considering how useful they + are in general. + By changing the default log level for these messages, developers + who need to see these for debugging purposes can increase their X + server verbosity level and still see them, so no functionality is lost. + + This patch lowers the default verbosity of the X server's Xvidmode + extension log file messages, in order to stop Xvidmode from writing + out non-critical log messages to the X server log whenever an + application uses this extension. + + Patch by Mike A. Harris + +2004-12-14 Roland Mainz + * xc/config/cf/X11.tmpl + * xc/config/cf/cygwin.cf + * xc/config/cf/darwin.cf + * xc/programs/Xserver/dix/Imakefile + * xc/programs/Xserver/miext/damage/Imakefile + Bug #1816 (https://bugs.freedesktop.org/show_bug.cgi?id=1816) + attachment #1300 (https://bugs.freedesktop.org/attachment.cgi?id=1300): + Add BuildRootless Imake variable and ROOTLESS define. + Patch by Torrey T. Lyons + +2004-12-14 Roland Mainz + * xc/config/cf/cygwin.cf + * xc/config/cf/xorg.cf + * xc/config/cf/xorgversion.def + * xc/config/cf/Imakefile + Bug #1393 (https://bugs.freedesktop.org/show_bug.cgi?id=1393) + attachment #1188 (https://bugs.freedesktop.org/attachment.cgi?id=1188): + Move xorg version numbers to separate config file + (xc/config/cf/xorgversion.def). + Patch by Alexander Gottwald + +2004-12-14 Roland Mainz + * xc/lib/GL/mesa/drivers/osmesa/Imakefile + Bugzilla #1743 (https://bugs.freedesktop.org/show_bug.cgi?id=1743) + attachment #1196 (https://bugs.freedesktop.org/attachment.cgi?id=1196): + Fix build failure on Solaris due "ld: fatal: + too many symbols require `small' PIC references" via adding + |#define LargePICTable YES| to the Imakefile. + +2004-12-14 Roland Mainz + * xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c + Bug #1826 (https://bugs.freedesktop.org/show_bug.cgi?id=1826) + attachment #1283 (https://bugs.freedesktop.org/attachment.cgi?id=1283): + Do not add '-4' to generated default file name (e.g. "xorg.conf" + instead of "xorg.conf-4"). + Patch by Matthieu Herrb + +2004-12-14 Roland Mainz + * xc/programs/xkbcomp/symbols/inet + Bug #1935 (https://bugs.freedesktop.org/show_bug.cgi?id=1935) + attachment #1394 (https://bugs.freedesktop.org/attachment.cgi?id=1394): + Changed comment in xkbcomp/symbols/inet to mention xorg (instead of + Xfree86). + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/xkbcomp/rules/Imakefile + Bug #1929 (https://bugs.freedesktop.org/show_bug.cgi?id=1929) + attachment #1388 (https://bugs.freedesktop.org/attachment.cgi?id=1388): + Create missing links for backward compatibility to XFree86 + Patch by Stefan Dirsch . + +2004-12-14 Roland Mainz + * xc/programs/xkbcomp/symbols/macintosh/us + Bug #1872 (https://bugs.freedesktop.org/show_bug.cgi?id=1872) + attachment #1315 (https://bugs.freedesktop.org/attachment.cgi?id=1315): + Include srvrv_ctrl(xfree86) in macintosh US XKB symbol file so VT + switching works again on mac. + Patch by Kristian Høgsberg + +2004-12-14 Roland Mainz + * xc/programs/xdm/resource.c + Bug #1825 (https://bugs.freedesktop.org/show_bug.cgi?id=1825) + attachment #1282 (https://bugs.freedesktop.org/attachment.cgi?id=1282): + Fix typo in prngdSocket resource name in xdm/resource.c. + Patch by Matthieu Herrb + +2004-12-14 Adam Jackson + * xc/extras/Mesa/: + Bug #2003 (https://bugs.freedesktop.org/show_bug.cgi?id=2003): + Merge Mesa 6.2.1. + * lib/GL/mesa/drivers/dri/r128/Imakefile.inc: + Fix Imakefile for r128 (Sergio Monteiro Basto) + +2004-12-14 Roland Mainz + * xc/programs/xrx/helper/helper.c + Bug #1942 (https://bugs.freedesktop.org/show_bug.cgi?id=1942) + attachment #1401 (https://bugs.freedesktop.org/attachment.cgi?id=1401): + Fix problems with random return code returned by "xrx". + Patch by Egbert Eich + +2004-12-14 Roland Mainz + * xc/programs/xedit/lisp/lisp.c + Bug #1936 (https://bugs.freedesktop.org/show_bug.cgi?id=1936) + attachment #1395 (https://bugs.freedesktop.org/attachment.cgi?id=1395): + Removed inclusion of unnecessary kernel header on Linux. + This may fail in an -ansi environment. + Patch by Egbert Eich + +2004-12-12 Roland Mainz + * xc/config/cf/xorgsite.def + * xc/config/cf/xprint_site.def + Bug #1827 (https://bugs.freedesktop.org/show_bug.cgi?id=1827) + attachment #1284 (https://bugs.freedesktop.org/attachment.cgi?id=1284): + xf86site.def is referenced in comments in places where + xorgsite.def is used + Patch by Matthieu Herrb + +2004-12-12 Roland Mainz + * xc/fonts/bdf/100dpi/Imakefile: + * xc/fonts/bdf/75dpi/Imakefile: + Bug #1560 (https://bugs.freedesktop.org/show_bug.cgi?id=1560) + attachment #1036 (https://bugs.freedesktop.org/attachment.cgi?id=1036): + Fix build of lucida fonts which were broken since 6.8.0. + Patch by Alexander Gottwald . + +2004-12-12 Roland Mainz + * xc/nls/XLC_LOCALE/en_US.UTF-8 + Bug #1842 (https://bugs.freedesktop.org/show_bug.cgi?id=1842) + attachment #1389 (https://bugs.freedesktop.org/attachment.cgi?id=1298): + Move iso10646 last so the "fallback" + fonts will actually be used if they are better matches. + +2004-12-12 Roland Mainz + * xc/config/cf/xorgsite.def: + Bug 2004-12-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c + * xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c + Bug #1824 (https://bugs.freedesktop.org/show_bug.cgi?id=1824) + attachment #1288 (https://bugs.freedesktop.org/attachment.cgi?id=1288): + Fix kbd driver for wskbd protocol and pure wscons console driver + Patch by Matthieu Herrb #1930 (https://bugs.freedesktop.org/show_bug.cgi?id=1930) + attachment #1389 (https://bugs.freedesktop.org/attachment.cgi?id=1389): + Make Xorg the default server to install. + Patch by Egbert Eich + +2004-12-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c + * xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c + Bug #1824 (https://bugs.freedesktop.org/show_bug.cgi?id=1824) + attachment #1288 (https://bugs.freedesktop.org/attachment.cgi?id=1288): + Fix kbd driver for wskbd protocol and pure wscons console driver + Patch by Matthieu Herrb + +2004-12-12 Roland Mainz + * xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.c + * xc/lib/GL/glx/glxext.c + Bug #1501 (https://bugs.freedesktop.org/show_bug.cgi?id=1501) + attachment #1013 (https://bugs.freedesktop.org/attachment.cgi?id=1013): + More complete fix for libglx bugs (double-free etc.). + Patch by Egbert Eich and Matthias Hopf. + +2004-12-12 Roland Mainz + * xc/fonts/encodings/Imakefile + * xc/fonts/encodings/ascii-0.enc + * xc/programs/mkfontscale/mkfontscale.c + Bugzilla #1703 (https://bugs.freedesktop.org/show_bug.cgi?id=1703) + attachment #1226 (https://bugs.freedesktop.org/attachment.cgi?id=1226): + Adding ascii-0 font encoding which helps in + cases where a font has all ASCII chars populated but not enougth + glyphs to match the requirements for ISO8859-1 (and to add + backwards compatibility to ttmkfdir). + +2004-12-12 Roland Mainz + * xc/extras/Mesa/src/mesa/tnl/t_vtx_x86_gcc.S: + Bugzilla #1079 (https://bugs.freedesktop.org/show_bug.cgi?id=1079) + attachment #636 (https://bugs.freedesktop.org/attachment.cgi?id=636): + Add missing check for CYGWIN for adding underscores tosymbol names + in assembler. Merged upstream, and should be brought in in + the next import. + Patch by Alexander Gottwald . + +2004-12-12 Roland Mainz + * xc/programs/xset/Imakefile + * xc/programs/xset/xset.c + Bugzilla #1659 (https://bugs.freedesktop.org/show_bug.cgi?id=1659) + attachment #1120 (https://bugs.freedesktop.org/attachment.cgi?id=1120): + Fix Imakefile bug which caused the Xprint support + in "xset" not being build. + +2004-12-12 Roland Mainz + * xc/programs/xman/print.c + * xc/programs/xmore/print.c + * xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c + Bugzilla #1601 (https://bugs.freedesktop.org/show_bug.cgi?id=1601) + attachment #1088 (https://bugs.freedesktop.org/attachment.cgi?id=1088): + Fix problems with wrong page counts in xedit&co. + when a global "*geometry" resource was overriding the internal + geometry management used by XawPrintShell(=usually adjust to + current page size, the resource was turning this into a static + value). + +2004-12-12 Roland Mainz + * xc/programs/xman/search.c + Bugzilla #1481 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1481) + attachment #976 (https://bugs.freedesktop.org/attachment.cgi?id=976) + Avoid several buffer overflows in xman if search string is too long. + Patch by Matthieu Herrb . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/ps/psout.c + Bugzilla #661 (https://freedesktop.org/bugzilla/show_bug.cgi?id=661) + attachment #1002 (https://bugs.freedesktop.org/attachment.cgi?id=1002): + Xprt producing spurious characters in PS + output when using the bitmap cache (Originally reported + against Solaris Xprt as Sun bug id #4369307, and + fixed in Solaris by Jay Hobson ). + Patch by Jay Hobson . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/ps/PsInit.c + Bugzilla #1800 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1800) + attachment #1474 (https://bugs.freedesktop.org/attachment.cgi?id=1474): + Fix Postscript DDX's 1bit StaticGray visual to report only 1bit + of significant bits in color specification (instead of 8bits). + Patch by Julien Lafon + +2004-12-12 Roland Mainz + * xc/config/cf/xprint_site.def + * xc/programs/Xserver/Xprint/ps/Ps.h + * xc/programs/Xserver/Xprint/ps/PsPixmap.c + * xc/programs/Xserver/Xprint/ps/PsPolygon.c + * xc/programs/Xserver/mi/miinitext.c + Bugzilla #1664 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1664) + attachment #1161 (https://bugs.freedesktop.org/attachment.cgi?id=1161): + RFE: Add support for the DOUBLE-BUFFER extension + to the Xprint server and DDX. Additionally a "pixmap-scrubber" + optimisation is added to the PostScript DDX to remove all content + from a vector pixmap when a |PolyFillRect()| call covers the whole + pixmap surface with a solid fill (this avoids that a backbuffer + vector pixmap gets constantly filled even when the content is + not visible anymore after |XdbeSwapBuffers()| has cleared the + hidden buffer with the background color). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/attributes.c + Bugzilla #1647 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1647) + attachment #1117 (https://bugs.freedesktop.org/attachment.cgi?id=1117): + Fix the problem that |XpSubmitJob()| returns + a random value (patch by Stefan Dirsch/SuSE). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/ps/PsColor.c + Bugzilla #1646 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1646) + attachment #1116 (https://bugs.freedesktop.org/attachment.cgi?id=1116): + Fix the problem that |PsCreateColormap()| returns + a random value (patch by Stefan Dirsch/SuSE). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/Oid.c + Bugzilla #1637 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1637) + attachment #1114 (https://bugs.freedesktop.org/attachment.cgi?id=1114): + Fix problems in oid code which may cause the + usage of an invalid string pointer (original patch by Egbert Eich). + +2004-12-12 Roland Mainz + * xc/programs/xlsfonts/Imakefile + * xc/programs/xlsfonts/xlsfonts.c + * xc/programs/xlsfonts/xlsfonts.man + * xc/programs/xlsfonts/xlsfonts.sgml + * xc/programs/xplsprinters/xplsprinters.html + * xc/programs/xplsprinters/xplsprinters.man + * xc/programs/xplsprinters/xplsprinters.sgml + Bugzilla #1551 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1551) + attachment #1025 (https://bugs.freedesktop.org/attachment.cgi?id=1025): + Convert "xlsfonts" manual page to DocBook + format (and document the new functionality introduced + with bug #1518). + +2004-12-12 Roland Mainz + * xc/programs/xlsfonts/Imakefile + * xc/programs/xlsfonts/dsimple.c + * xc/programs/xlsfonts/dsimple.h + * xc/programs/xlsfonts/xlsfonts.c + Bugzilla #1518 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1518) + attachment #1022 (https://bugs.freedesktop.org/attachment.cgi?id=1022): + Add filter support to "xlsfonts" that it can + filter builtin-, glyph- and/or other kinds of printer fonts + (controlled by the xp-listfonts-modes attribute as described + in the CDE DtPrint and Xprint specifications). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/pcl/PclInit.c + * xc/programs/Xserver/Xprint/ps/PsInit.c + Bugzilla #1629 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1629) + attachment #1107 (https://bugs.freedesktop.org/attachment.cgi?id=1107): + Fix crash on AMD64, regression caused by bug + 1496 ("Xorg Xprt does not support "*xp-listfonts-mode: + xp-list-internal-printer-fonts" to toggle the usage of + printer-builtin fonts"). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/Init.c + * xc/programs/Xserver/Xprint/pcl/PclInit.c + * xc/programs/Xserver/Xprint/ps/PsInit.c + Bugzilla #1496 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1496) + attachment #998 (https://bugs.freedesktop.org/attachment.cgi?id=998): + Fixed Xprt font handling which did not support + "*xp-listfonts-modes: xp-list-internal-printer-fonts" or + "*xp-listfonts-modes: xp-list-glyph-fonts" to toggle + the usage of printer-builtin and glyph fonts in XListFonts*(), + XLoad*Font(), etc. + Additionally the Xprint DDX now explicitly list "xp-listfonts-modes" + in "document-attributes-supported" (for document-level) or + "xp-page-attributes-supported" (for page-level) when the DDX implements + this feature (as described in the CDE DtPrint and Xprint + specifications). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/ps/PsGC.c + * xc/programs/Xserver/Xprint/ps/PsPixmap.c + Bugzilla #1416 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1416) + attachment #994 (https://bugs.freedesktop.org/attachment.cgi?id=994): + Fix Xprt PostScript DDX crashes when copying + offscreen pixmap content to the same pixmap (the crash can + be reproduced with % x11perf -copypixpix500 ... # or the + reduced testcase in bug #1416 (attachment #993)). + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xprint/Init.c + * xc/programs/Xserver/Xprint/ps/Ps.h + * xc/programs/Xserver/Xprint/ps/PsArea.c + * xc/programs/Xserver/Xprint/ps/PsColor.c + * xc/programs/Xserver/Xprint/ps/PsInit.c + * xc/programs/Xserver/Xprint/ps/psout.c + * xc/programs/Xserver/Xprint/ps/psout.h + Bugzilla #1299 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1299) + attachment #1001 (https://bugs.freedesktop.org/attachment.cgi?id=1001): + Add more visuals to the Postscript DDX (8bit GrayScale/StaticGray, + 1bit StaticGray and the basic infratructure for "deep" visuals with more + than 8bits per RGB gun). + Patch by Roland Mainz . + +2004-12-12 Roland Mainz + * xc/lib/GL/glx/glxcmds.c + Bugzilla #1672 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1672) + attachment #1132 (https://bugs.freedesktop.org/attachment.cgi?id=1132): + Prevent libGL segfault if server's GLX version is > 1.2. + Patch by Adam Jackson . + +2004-12-12 Roland Mainz + * xc/lib/GL/mesa/Imakefile + * xc/lib/GL/mesa/math/Imakefile + * xc/lib/GL/mesa/shader/Imakefile + * xc/lib/GL/mesa/sparc/Imakefile + * xc/lib/GL/mesa/swrast/Imakefile + * xc/lib/GL/mesa/swrast_setup/Imakefile + * xc/lib/GL/mesa/tnl/Imakefile + * xc/lib/GL/mesa/tnl_dd/Imakefile + Bugzilla #1843 (https://freedesktop.org/bugzilla/show_bug.cgi?id=1843) + attachment #1301 (https://bugs.freedesktop.org/attachment.cgi?id=1301): + Fix build failure in the linker stage of libOSMesa.so.4.0 which + happens more or less every couple of months with the message + "ld: fatal: too many symbols require `small' PIC references: + have 2112, maximum 2048 -- recompile some modules -K PIC.". + The fix is to add |#define LargePICTable YES| to _ALL_ relevant + Imakefiles (previously this was done only on "on-demand" basis). + +2004-12-12 Roland Mainz + * xc/util/memleak/getretmips.c + Bugzilla #758 (https://bugs.freedesktop.org/show_bug.cgi?id=758) + attachment #375 (https://bugs.freedesktop.org/attachment.cgi?id=375): + Fix a buffer overrun which may happen when the size of the stack buffer + is exactly the same as the actual stack size. + Patch by Stephen Kennedy . + +2004-12-12 Roland Mainz + * xc/extras/Xpm/lib/xpm.h + Bugzilla #830 (https://bugs.freedesktop.org/show_bug.cgi?id=830) + attachment #1493 (https://bugs.freedesktop.org/attachment.cgi?id=1493): + Fix libXpm header (xpm.h) to use the X11 function begin/end marker + macros (_XFUNCPROTOBEGIN, _XFUNCPROTOEND) instead of homegrown + (native) C++ code. + Patch by Kevin DeKorte . + +2004-12-12 Roland Mainz + * xc/include/extensions/dpms.h + Bugzilla #830 (https://bugs.freedesktop.org/show_bug.cgi?id=830) + attachment #1492 (https://bugs.freedesktop.org/attachment.cgi?id=1492): + Get DPMS header file (include/extensions/dpms.h) working with C++ + applications. + Patch by Kevin DeKorte and Roland + Mainz . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xext/saver.c + Bugzilla #1695 (https://bugs.freedesktop.org/show_bug.cgi?id=1695) + attachment #1230 (https://bugs.freedesktop.org/attachment.cgi?id=1230): + Fix crash in Xscreensaver code which allowed any authentificated X client + to crash the Xserver using |XScreenSaverUnsetAttributes()|. + Patch by ajax@nwnk.net + +2004-12-12 Roland Mainz + * xc/include/extensions/Imakefile + Bugzilla #1871 (https://bugs.freedesktop.org/show_bug.cgi?id=1871) + attachment #1314 (https://bugs.freedesktop.org/attachment.cgi?id=1314): + Remove old and now obsolete xc/include/extensions/damage.h. + Patch by Kristian Høgsberg . + +2004-12-12 Roland Mainz + * xc/include/extensions/Xinerama.h + Bugzilla #1897 (https://bugs.freedesktop.org/show_bug.cgi?id=1897) + attachment #1338 (https://bugs.freedesktop.org/attachment.cgi?id=1338): + xc/include/extensions/Xinerama.h should include , since it uses + libX11 functions. + Patch by Xavier Bestel and Daniel Stone . + +2004-12-12 Roland Mainz + * xc/lib/Xaw/AsciiSink.c + * xc/lib/Xaw/Label.c + * xc/lib/Xaw/List.c + * xc/lib/Xaw/MultiSink.c + * xc/lib/Xaw/SmeBSB.c + * xc/lib/Xaw/Tip.c + * xc/lib/Xaw/XawIm.c + Bugzilla #1941 (https://bugs.freedesktop.org/show_bug.cgi?id=1941) + attachment #1400 (https://bugs.freedesktop.org/attachment.cgi?id=1400): + Fail during initialization with error if font/fontset is not + set for widget. This prevents a sig11 later when the non-existent + font/fontset structs are referenced. + Patch by Egbert Eich . + +2004-12-12 Roland Mainz + * xc/lib/X11/XKBBind.c + Bugzilla #1459 (https://bugs.freedesktop.org/show_bug.cgi?id=1459) + attachment #966 (https://bugs.freedesktop.org/attachment.cgi?id=966): + Fix |bzero()| size argument so it doesn't trash the stack. + Patch by Mike A. Harris . + +2004-12-12 Roland Mainz + * xc/lib/X11/XlibInt.c + Bugzilla #1864 (https://bugs.freedesktop.org/show_bug.cgi?id=1864) + attachment #1434 (https://bugs.freedesktop.org/attachment.cgi?id=1434): + Fix random crashes because |bufp| variable is not initialized in + |_XopenFile| (later the pointer is checked for |NULL| and freed + otherwise. If the file was not found the pointer is uninitialized and + rando memory is freed). + Patch by Alexander Gottwald . + +2004-12-12 Roland Mainz + * xc/lib/X11/XlibInt.c + Bugzilla #1864 (https://bugs.freedesktop.org/show_bug.cgi?id=1864) + attachment #1310 (https://bugs.freedesktop.org/attachment.cgi?id=1310): + Fix random crashes because |pbuf| variable is not initialized in + |_XFopenFile| (later the pointer is checked for |NULL| and freed + otherwise. If the file was not found the pointer is uninitialized and + rando memory is freed). + Patch by Alexander Gottwald + +2004-12-12 Roland Mainz + * xc/lib/X11/imInsClbk.c + Bugzilla #1926 (https://bugs.freedesktop.org/show_bug.cgi?id=1926) + attachment #1482 (https://bugs.freedesktop.org/attachment.cgi?id=1482): + Unregistering events in XSelectInput() when unregistering IM + filter callbacks via |_XimUnRegisterIMInstantiateCallback| may be a + bad idea as others may be interested in this event. + Removed the call to XSelectInput() altogether as we are in root + window anyway. + Patch by Lubos Lunak and and Egbert Eich . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c + Bugzilla #1688 (https://bugs.freedesktop.org/show_bug.cgi?id=1688) + attachment #1530 (https://bugs.freedesktop.org/attachment.cgi?id=1530): + Fix the current implementation to make it possible to slow down the + mouse pointer or use arbitrary fractions (without running into + rounding error issues). The change is using the same method of + preserving rounding errors that the exponential method is already + using. + Patch by Jan Brunner . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/os/WaitFor.c + Bugzilla #1934 (https://bugs.freedesktop.org/show_bug.cgi?id=1934) + attachment #1393 (https://bugs.freedesktop.org/attachment.cgi?id=1393): + Fixing |SetDPMSTimers()| so that DPMS*Time == 0 disables the + appropriate timer. This takes advantage of the fact that + |TimerSet()| with a timeout argument 0 behaves like |TimerCanel()|. + Patch by Egbert Eich . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/dix/dispatch.c + Bugzilla #1939 (https://bugs.freedesktop.org/show_bug.cgi?id=1939) + attachment #1398 (https://bugs.freedesktop.org/attachment.cgi?id=1398): + Fixe size of a variable that gets assigned the value of + SmartScheduleTime (|long|) to |long|. This should help to prevent + smart scheduler lockup on 64 bit systems due to datatype overruns. + Patch by Andreas Schwab and Egbert Eich . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/Xext/saver.c + Bugzilla #1989 (https://bugs.freedesktop.org/show_bug.cgi?id=1989) + attachment #1399 (https://bugs.freedesktop.org/attachment.cgi?id=1399): + Fixed sig11 in |ScreenSaverUnsetAttributes()| which occured when + calling a |CloseDisplay()| after |XScreenSaverSetAttributes()| + followed by |XScreenSaverUnsetAttributes()|. Caused by missing + |FreeResource()| in |XScreenSaverUnsetAttributes()|. + Patch by Egbert Eich . + +2004-12-12 Roland Mainz + * xc/lib/dmx/dmx.c + Bugzilla #1989 (https://bugs.freedesktop.org/show_bug.cgi?id=1989) + attachment #1442 (https://bugs.freedesktop.org/attachment.cgi?id=1442): + Fix invalid write in libXdmx extension library (for |DMXAddInput()|). + Patch by Mark McLoughlin . + +2004-12-12 Roland Mainz + * xc/lib/dmx/dmx.c + Bugzilla #1989 (https://bugs.freedesktop.org/show_bug.cgi?id=1989) + attachment #1441 (https://bugs.freedesktop.org/attachment.cgi?id=1441): + Fix invalid write in libXdmx extension library. + Patch by Mark McLoughlin . + +2004-12-12 Roland Mainz + * xc/programs/Xserver/miext/damage/damage.c + Bugzilla #1204 (https://bugs.freedesktop.org/show_bug.cgi?id=1204) + attachment #1360 (https://bugs.freedesktop.org/attachment.cgi?id=1360): + Fix X11 test suite (caused by DAMAGE layer) failure with Xvfb when + rendering text using |XDrawText*()| (XDrawText() tests 1, 3, 4, 27, 28, + 29, 30, 34, 37, 39, 41, 43 and XDrawText16() tests 1, 3, 9, 10, 11, 12, + 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 34, + 37, 39, 41, 43). + Patch by Hong Bo Peng and Stefan Dirsch + . + +2004-12-08 Roland Mainz + * xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h + Bugzilla #557 (https://bugs.freedesktop.org/show_bug.cgi?id=557) + attachment #1255 (https://bugs.freedesktop.org/attachment.cgi?id=1255): + Do not use "bool" as a variable name in xf86cfg, to avoid + compiler bugs. + Patch by Donnie Berkholz . + +2004-12-08 Roland Mainz + * xc/programs/Xserver/Xext/xf86bigfont.c + Bugzilla #1402 (https://bugs.freedesktop.org/show_bug.cgi?id=1402) + attachment #948 (https://bugs.freedesktop.org/attachment.cgi?id=948): + Fix BigFont extension if SHM is compiled in but + not working. Does not access SHM and privates if the SHM syscall + failed during extension initialization. + Patch by Alexander Gottwald . + +2004-12-08 Roland Mainz + * xc/programs/Xserver/os/utils.c + Bugzilla #1453 (https://bugs.freedesktop.org/show_bug.cgi?id=1453) + attachment #964 (https://bugs.freedesktop.org/attachment.cgi?id=964): + Fix spaces in usage output for BIGREQUESTS extension (option + "-maxbigreqsize"). + +2004-12-08 Roland Mainz + * xc/programs/Xserver/os/utils.c + Bugzilla #1489 (https://bugs.freedesktop.org/show_bug.cgi?id=1489) + attachment #979 (https://bugs.freedesktop.org/attachment.cgi?id=979): + Use |long| instead of |int| for BIGREQUESTS commandline option. + +2004-12-08 Roland Mainz + * xc/programs/Xserver/hw/xfree86/loader/elfloader.c: + Bugzilla #1812 (https://bugs.freedesktop.org/show_bug.cgi?id=1812) + attachment #1263 (https://bugs.freedesktop.org/attachment.cgi?id=1263), + Sun bug id #6175128: + Add Solaris to the platforms on which mprotect() is run to set + execute permissions when necessary. + Patch by Alan Coopersmith . + +2004-12-08 Roland Mainz + * xc/programs/xmodmap/pf.c + * xc/programs/xmodmap/xmodmap.c + * xc/programs/xmodmap/xmodmap.h + Bugzilla #1818 (https://bugs.freedesktop.org/show_bug.cgi?id=1818) + attachment #1286 (https://bugs.freedesktop.org/attachment.cgi?id=1286): + Fixing off-by-one allocation error. + Patch by Kristian Høgsberg . + +2004-12-08 Roland Mainz + * xc/programs/Xserver/dix/main.c + Bugzilla #1404 (https://bugs.freedesktop.org/show_bug.cgi?id=1404): + Fixing random crashes (like in DAMAGE code etc.) in Xnest due + uninitalised GetWindowPixmap. + Original patch by Alexander Gottwald + +2004-12-08 Roland Mainz + * xc/programs/Xserver/mi/miinitext.c + Bugzilla #1361 (https://bugs.freedesktop.org/show_bug.cgi?id=1361) + attachment #1287 (https://bugs.freedesktop.org/attachment.cgi?id=1287): + Avoid DRI initalisation when the Xfree86-DRI extension was turned + off. + Patch by Kristian Høgsberg . + +2004-12-08 Roland Mainz + * xc/programs/Xserver/mi/miinitext.c + Bugzilla #1361 (https://bugs.freedesktop.org/show_bug.cgi?id=1361) + attachment #938 (https://bugs.freedesktop.org/attachment.cgi?id=938): + Allow more extensions to be enabled/disabled. + +2004-12-08 Roland Mainz + * xc/programs/Xserver/mi/miinitext.c + Bugzilla #1361 (https://bugs.freedesktop.org/show_bug.cgi?id=1361) + attachment #938 (https://bugs.freedesktop.org/attachment.cgi?id=938): + Allow more extensions to be enabled/disabled. + +2004-12-08 Roland Mainz + * xc/programs/Xserver/hw/xfree86/loader/dixsym.c + * xc/programs/Xserver/hw/xfree86/loader/extsym.c + Bugzilla #1361 (https://bugs.freedesktop.org/show_bug.cgi?id=1361) + attachment #899 (https://bugs.freedesktop.org/attachment.cgi?id=899): + Fix module loader bustage due duplicate symbols + caused by the first patch in Bugzilla #1361 + +2004-12-08 Roland Mainz + * xc/programs/Xserver/hw/xfree86/loader/dixsym.c + * xc/programs/Xserver/include/globals.h + * xc/programs/Xserver/mi/miinitext.c + * xc/programs/Xserver/os/utils.c + Bugzilla #1361 (https://bugs.freedesktop.org/show_bug.cgi?id=1361) + attachment #894 (https://bugs.freedesktop.org/attachment.cgi?id=894): + Allow turning on/off most of the Xserver extensions + (=all except server-specific extensions (e.g. DMX, XpExtension, + etc.) via +extension/-extension + +2004-11-14 Alan Coopersmith + + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c: + * xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c: + + (Bugzilla #1777) Import Mark Vojkovich's changes to NV driver + since last sync with XFree86, including: + Support for new NVIDIA chips. + Egbert has a laptop that needs some DPMS ordering reversed. + New chip support and workaround for Toshiba M30 laptop issue. + PCI-Xpress chip support. + DPMS support for DVI. + Cursor changes for NV11 so that alpha blended cursors will work + in conjunction with dithering (laptop panels). It previously + did not. + HW support for alpha blended stretch blits on NV5 and higher, + though nothing is using them at this point. + Add support for VBlank syncing the Xv Blit adaptor on hardware + that supports it (NV11 and higher). + Make console restoration a little more robust. We were making + an assumption that failed on a newer laptop. + Workaround for some NV31 DVI artifacts. + + Also add nVidia license statement to nv man page to comply with + requirement that it appear in "user documentation" + +2004-10-17 Alex Deucher + + * programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c: + (RADEONEnterVT): + Fix resume in radeon driver (bug 1220) + +----------- 6.8.1 Release + +2004-09-17 Kevin E. Martin + + * config/cf/xorg.cf: + Update the XORG_DATE for the release. + + * config/cf/cygwin.cf: + Update cygwin release version. + + * BUILD: + * README: + * RELNOTES: + * programs/Xserver/hw/xfree86/doc/BUILD: + * programs/Xserver/hw/xfree86/doc/DESIGN: + * programs/Xserver/hw/xfree86/doc/Install: + * programs/Xserver/hw/xfree86/doc/OS2.Notes: + * programs/Xserver/hw/xfree86/doc/README: + * programs/Xserver/hw/xfree86/doc/README.DECtga: + * programs/Xserver/hw/xfree86/doc/README.Darwin: + * programs/Xserver/hw/xfree86/doc/README.LynxOS: + * programs/Xserver/hw/xfree86/doc/README.NetBSD: + * programs/Xserver/hw/xfree86/doc/README.OpenBSD: + * programs/Xserver/hw/xfree86/doc/README.SCO: + * programs/Xserver/hw/xfree86/doc/README.SiS: + * programs/Xserver/hw/xfree86/doc/README.Solaris: + * programs/Xserver/hw/xfree86/doc/README.XKB-Config: + * programs/Xserver/hw/xfree86/doc/README.chips: + * programs/Xserver/hw/xfree86/doc/README.dps: + * programs/Xserver/hw/xfree86/doc/README.fonts: + * programs/Xserver/hw/xfree86/doc/README.i740: + * programs/Xserver/hw/xfree86/doc/README.i810: + * programs/Xserver/hw/xfree86/doc/README.mouse: + * programs/Xserver/hw/xfree86/doc/README.r128: + * programs/Xserver/hw/xfree86/doc/README.rendition: + * programs/Xserver/hw/xfree86/doc/README.s3virge: + * programs/Xserver/hw/xfree86/doc/RELNOTES: + * programs/Xserver/hw/xfree86/doc/Versions: + * programs/Xserver/hw/xfree86/doc/sgml/defs.ent: + * programs/xkbcomp/README.config: + Update documentation for release. + +2004-09-15 Daniel Stone + + * xc/extras/Xpm/lib/Attrib.c: + * xc/extras/Xpm/lib/CrDatFrI.c: + * xc/extras/Xpm/lib/WrFFrI.c: + * xc/extras/Xpm/lib/XpmI.h: + * xc/extras/Xpm/lib/create.c: + * xc/extras/Xpm/lib/data.c: + * xc/extras/Xpm/lib/hashtab.c: + * xc/extras/Xpm/lib/parse.c: + * xc/extras/Xpm/lib/scan.c: + * xc/lib/Xpm/Imakefile: + Merge patch from Mathieu Herrb to fix several integer overflows and + other security errors in libXpm. + + 2004-09-07 Kevin E. Martin * BUILD: @@ -6388,4 +8139,4 @@ so i18n libs from build tree get used instead of installed ones (Egbert Eich). -$XdotOrg: xc/ChangeLog,v 1.365 2004/09/08 01:54:28 kem Exp $ +$XdotOrg: xc/ChangeLog,v 1.365.2.155 2005/02/09 18:03:20 gisburn Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/Makefile x11r682/xc/Makefile --- xc/Makefile 2004-09-03 18:18:17.000000000 +0200 +++ xc/Makefile 2005-02-09 19:03:20.000000000 +0100 @@ -7,7 +7,7 @@ # Luna users will need to either run make as "make MAKE=make" # or add "MAKE = make" to this file. -RELEASE = "Release 6.8" +RELEASE = "Release 6.8.2" SHELL = /bin/sh RM = rm -f MV = mv diff -N -x '*CVS*' -r -u x11r680/xc/README x11r682/xc/README --- xc/README 2004-09-04 01:41:20.000000000 +0200 +++ xc/README 2005-02-09 00:54:04.000000000 +0100 @@ -1,30 +1,30 @@ - README for X11R6.8 + README for X11R6.8.2 The X.Org Foundation - 8 September 2004 + 9 February 2005 Abstract - X11R6.8 is an Open Source version of the X Window System that sup- - ports many UNIX(R) and UNIX-like operating systems (such as Linux, - FreeBSD, NetBSD, OpenBSD and Solaris x86) on Intel and other plat- - forms. This version is compatible with X11R6.7 and other X window - system implementations which support the X11R6 standard. - -1. What is X11R6.8? - -X11R6.8 is the eighth full release in the X11R6 series. - -X11R6.8 is the current X.Org Foundation release series. The core of X11R6.8 -is a modular X server. The 6.8 version is a new release that includes addi- -tional hardware support, functional enhancements and bug fixes. Specific -release enhancements can be viewed in the Release Notes. + X11R6.8.2 is an Open Source version of the X Window System that + supports many UNIX(R) and UNIX-like operating systems (such as + Linux, FreeBSD, NetBSD, OpenBSD and Solaris x86) on Intel and other + platforms. This version is compatible with X11R6.8.1 and other X + window system implementations which support the X11R6 standard. + +1. What is X11R6.8.2? + +X11R6.8.2 is the eighth full release in the X11R6 series. + +X11R6.8.2 is the current X.Org Foundation release series. The core of +X11R6.8.2 is a modular X server. The 6.8.2 version is a new release that +includes additional hardware support, functional enhancements and bug fixes. +Specific release enhancements can be viewed in the Release Notes. -Most modern PC video hardware is supported in X11R6.8, and most PC video +Most modern PC video hardware is supported in X11R6.8.2, and most PC video hardware that isn't supported explicitly can be used with the "vesa" driver. -The Release Notes has a table showing the drivers provided with X11R6.8, and -links to related documentation. +The Release Notes has a table showing the drivers provided with X11R6.8.2, +and links to related documentation. The X.Org Foundation X releases are produced by the X.Org Foundation. The X.Org Foundation has been formed as a Delaware corporation organized to oper- @@ -34,11 +34,11 @@ is free to all participants. Applications for Membership are now being accepted, and active participants in the further development of the X Window Technology are invited to complete a membership application -. The X11R6.8 codebase -forms the second X window system release since the formation of the X.org -foundataion and includes code from the X Consortium, the Open Group and the -XFree86[tm] project. This release is dedicated to the greater X community, -developers and users alike. +. The X11R6.8.2 code- +base forms the fourth X window system release since the formation of the +X.org foundataion and includes code from the X Consortium, the Open Group and +the XFree86[tm] project. This release is dedicated to the greater X commu- +nity, developers and users alike. 2. Licensing @@ -96,38 +96,38 @@ using the xorg component. This will ensure that they are included in future releases. -6. How to get X11R6.8 +6. How to get X11R6.8.2 -X11R6.8 can be found from the X.Org Foundation wiki at +X11R6.8.2 can be found from the X.Org Foundation wiki at , and at mirrors of this server. Information about obtaining and installing binary distributions of this release can be found in the Installation Document. Information about obtaining the release in source form is given below. -The source for version 6.8.0 is split into seven tarballs: +The source for version 6.8.2 is split into seven tarballs: - X11R6.8.0-src1.tar.gz - X11R6.8.0-src2.tar.gz - X11R6.8.0-src3.tar.gz - X11R6.8.0-src4.tar.gz - X11R6.8.0-src5.tar.gz - X11R6.8.0-src6.tar.gz - X11R6.8.0-src7.tar.gz + X11R6.8.2-src1.tar.gz + X11R6.8.2-src2.tar.gz + X11R6.8.2-src3.tar.gz + X11R6.8.2-src4.tar.gz + X11R6.8.2-src5.tar.gz + X11R6.8.2-src6.tar.gz + X11R6.8.2-src7.tar.gz The first three contain everything except the fonts and general X11 documen- -tation. Those three are sufficient for building X11R6.8 if you already have -a set of fonts. The fourth and fifth contain the fonts. The sixth contains -the source for the general X11 documentation. The seventh contains the gen- -eral X11 documentation in hardcopy format. +tation. Those three are sufficient for building X11R6.8.2 if you already +have a set of fonts. The fourth and fifth contain the fonts. The sixth con- +tains the source for the general X11 documentation. The seventh contains the +general X11 documentation in hardcopy format. -To format the X11R6.8 documentation use the latest version of our doctools +To format the X11R6.8.2 documentation use the latest version of our doctools package available from the Xorg CVS repository's "doctools" module. The X source code for this and all releases/snapshots as well as development versions can also be accessed via the Freedesktop.org CVS repository. It's also possible to browse the freedesktop CVS repository . The CVS tag for this version is -"XORG-6_8_0". The CVS tag for the stable branch for this release is +"XORG-6_8_2". The CVS tag for the stable branch for this release is "XORG-6_8-branch". To check out the latest development version, don't spec- ify any tag. @@ -144,4 +144,4 @@ $Id$. -$XdotOrg: xc/README,v 1.3 2004/09/03 23:41:20 kem Exp $ +$XdotOrg: xc/README,v 1.3.2.4 2005/02/08 23:54:04 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/RELNOTES x11r682/xc/RELNOTES --- xc/RELNOTES 2004-09-04 02:22:32.000000000 +0200 +++ xc/RELNOTES 2005-02-09 00:54:04.000000000 +0100 @@ -1,19 +1,19 @@ - Release Notes for X11R6.8 + Release Notes for X11R6.8.2 The X.Org Foundation The XFree86 Project, Inc. - 8 September 2004 + 9 February 2005 Abstract These release notes contains information about features and their - status in the X.Org Foundation X11R6.8 release. It is based on the - XFree86 4.4RC2 RELNOTES document published by The XFree86[tm] Pro- - ject, Inc. There are significant updates and differences in the + status in the X.Org Foundation X11R6.8.2 release. It is based on + the XFree86 4.4RC2 RELNOTES document published by The XFree86[tm] + Project, Inc. There are significant updates and differences in the X.Org release as noted below. -1. Introduction to the X11R6.8 Release +1. Introduction to the X11R6.8.2 Release The release numbering is based on the original MIT X numbering system. X11 refers to the version of the network protocol that the X Window system is @@ -37,7 +37,7 @@ top.org using the xorg product, and discussions on this server take place on . -X11R6.8 comes with a graphical configuration tool called "xorgcfg", which +X11R6.8.2 comes with a graphical configuration tool called "xorgcfg", which also has a text mode interface and can be used to create an initial configu- ration file. It can also be used to customise existing configurations. @@ -63,32 +63,33 @@ quick read through the Installation Document. It may save you some time and also help you figure out which of the binary releases you need. -The next section describes what is new in the latest version (6.8) compared -with the previous full release (6.7). The other sections below describe some -of the new features and changes between 3.3.x and 4.0. There are lots of new -features, and we definitely don't have enough space to cover them all here. +The next section describes what is new in the latest version (6.8.2) compared +with the previous full release (6.8.1). The other sections below describe +some of the new features and changes between 3.3.x and 4.0. There are lots +of new features, and we definitely don't have enough space to cover them all +here. -2. Summary of new features in X11R6.8 +2. Summary of new features in X11R6.8.2 -This is a sampling of the new features in X11R6.8. A more complete list of +This is a sampling of the new features in X11R6.8.2. A more complete list of changes can be found in the ChangeLog file that is part of the X source tree. o Freetype was updated to version 2.1.8. But installing freetype from X distributions would often or usually result in the replacement or use of "stale" versions of freetype. On Linux, FreeBSD, Solaris 10, and SCO5, - therefore, X11R6.8 will by default use the version of freetype2 that is - installed on the system. If your system doesn't come with an installed - freetype2 and you wish to use the version supplied with this distribu- - tion, please add: + therefore, X11R6.8.2 will by default use the version of freetype2 that + is installed on the system. If your system doesn't come with an + installed freetype2 and you wish to use the version supplied with this + distribution, please add: #define HasFreetype2 NO to config/cf/host.def. - o The XTT font module and FreeType1 have been retired because FreeType2 + o The XTT font module and FreeType1 have been retired because FreeType2 subsumes their functionality - o Retire old PS Type1 font rasterizer (except for CID font usage) since + o Retire old PS Type1 font rasterizer (except for CID font usage) since the FreeType2 rasterizer now handles PS Type1 (*.pfa, *.pfb) o Render implementation fixes @@ -97,6 +98,8 @@ o Updated SiS driver + o Updated Nvidia driver (opensource version) + o Render acceleration for ATI's R100 and R200-series cards o Substantial speedups in the software implementation of the render exten- @@ -113,11 +116,12 @@ o Software mouse cursor is now based on the Damage extension o A new keyboard driver is enabled by default. The old driver is disabled - unless explicitly compiled in by defining the macro USE_DEPRECATED_KEY- - BOARD_DRIVER + unless explicitly compiled in by defining the macro |USE_DEPRECATED_KEY- + BOARD_DRIVER|. - o Extensions can be enabled/disabled from the configuration file and from - the command line + o All extensions (except Xserver-specific extensions "DMX" and "XpExten- + sion") can now be enabled/disabled from the configuration file and from + the command line. o Mac OS X updates: @@ -134,9 +138,11 @@ o Fixed some GLX rendering problems on Mac OS X 10.2 and earlier + o Updated xterm version + 2.1 New X extensions -X11R6.8 includes four new extensions: +X11R6.8.2 includes four new extensions: XFixes The XFixes extension is a collection of improvements for defi- @@ -163,8 +169,8 @@ core protocol and the RENDER extension, the compositing manager can create special effects, such as translucennt windows. - The Composite extension is considered experimental in X11R6.8 and - is turned off by default. + The Composite extension is considered experimental in X11R6.8.2 + and is turned off by default. XEvIE (X Event Interception Extension) (experimental) XEvIE is an extension to intercept core keyboard and pointing @@ -173,8 +179,8 @@ (i.e., interested clients). This feature is required by the GNOME accessibility project. - The XEvIE extension is considered experimental in X11R6.8 and is - turned off by default. + The XEvIE extension is considered experimental in X11R6.8.2 and + is turned off by default. As noted above, some extensions are disabled by default. They can be enabled either in the xorg.conf configuration file or on the Xorg command-line. For @@ -189,7 +195,7 @@ 2.2 Distributed Multihead X (DMX) -X11R6.8 includes a new X server, called Xdmx, that allows users to create a +X11R6.8.2 includes a new X server, called Xdmx, that allows users to create a single unified desktop from multiple running X servers. It works by creating a local screen on each of these running X servers, which can be distributed across a network, and then presents that set of screens to the user. When @@ -201,8 +207,9 @@ 2.3 Xprint updates - o Integrated various fixes from xprint.mozdev.org (more or less the whole - codebase has been merged) + o Integrated various fixes from xprint.mozdev.org + (more or less the whole codebase has been + merged) o Integrated various fixes from Sun Microsystems @@ -211,18 +218,20 @@ o New set of maintenance tools for the Xprint server (xplsprinters, xpre- hashprinterlist, etc.) - o Added new XprintUtils client library to make the usage off Xprint easier + o Added new XprintUtils client library to make the usage of Xprint easier o Various other features and fixes integrated o Athena toolkit now has print support (XawPrintShell) which is included - in a separate version of that library (Xaw8) + in a new version of that library (Xaw8) - o Various applications/tools like xman, xedit, xlogo, etc. now have print - support + o Various applications/tools like xman, xedit, xlogo, xlsfonts, etc. now + have print support 2.4 Updated Mesa and DRI from upstream sources + o Mesa version has been updated to 6.2.1 (in X11R6.8.2) + o More OpenGL extensions o MergedFB for Radeon (Dualhead DRI support on these cards) @@ -242,23 +251,7 @@ 2.5 Video driver enhancements - o SiS driver updates include - - o output device hotplugging - - o lots of fixes for 661, 741, 760 - - o extended interface for SiSCtrl? - - o extended LCD handling (allow more modes) - - o HDTV support (480p, 480i, 720p. 1080i; 315/330 series) - - o Added video blitter Xv adapter (315/330 series) - - o extended RENDER acceleration - - o Radeon driver updates: + o ATI Radeon driver updates: o Merged Framebuffer support (dualhead with DRI) @@ -277,13 +270,9 @@ o Many other small fixes - o Neomagic driver updates - - o Support for Xv on pre-nm2160 chips - - o Pseudocolor overlay mode + o Chips driver update - o Improved support for lowres double scan modes + o Improved BE support o MGA driver updates @@ -291,6 +280,14 @@ o Updated 3D driver + o Neomagic driver updates + + o Support for Xv on pre-nm2160 chips + + o Pseudocolor overlay mode (=PseudoColor emulation) + + o Improved support for lowres double scan modes + o i810 driver updates o Dualhead support (i830+) @@ -299,17 +296,33 @@ o New 3D driver (i830+) + o i810 driver is now supported for AMD64 + + o S3 driver updates + + o Support for additional IBM RAMDACS + o Savage driver updates o Pseudocolor overlay mode - o S3 driver updates + o SiS driver updates include - o Support for additional IBM RAMDACS + o output device hotplugging - o Chips driver update + o lots of fixes for 661, 741, 760 - o Improved BE support + o extended interface for SiSCtrl? + + o extended LCD handling (allow more modes) + + o HDTV support (480p, 480i, 720p. 1080i; 315/330 series) + + o Added video blitter Xv adapter (315/330 series) + + o extended RENDER acceleration + + o SiS driver now supported on AMD64 o New Voodoo driver (Alan Cox) @@ -320,7 +333,7 @@ 3.1 Video Drivers -X11R6.8 includes the following video drivers: +X11R6.8.2 includes the following video drivers: +--------------+--------------------------+---------------------------------------------+ |Driver Name | Description | Further Information | @@ -376,48 +389,63 @@ Darwin/Mac OS X uses IOKit drivers and does not use the module loader drivers listed above. Further information can be found in README.Darwin. -X11R6.8 includes the following input drivers: +X11R6.8.2 includes the following print drivers: + +3.2 Print Drivers + ++------------+----------------------------------------+---------------------+ +|Driver Name | Description | Further Information | ++------------+----------------------------------------+---------------------+ +|PostScript | PostScript driver | | +|PCL | PCL color driver | | +|PCL-MONO | PCL monocrome driver | | +|RASTER | Monocrome raster driver (XWD, PS, PCL) | | ++------------+----------------------------------------+---------------------+ + +Drivers marked with (*) are available for Linux only. + +X11R6.8.2 includes the following input drivers: -3.2 Input Drivers +3.3 Input Drivers - +------------+----------------------------------+---------------------+ - |Driver Name | Description | Further Information | - +------------+----------------------------------+---------------------+ - |aiptek(*) | Aiptek USB tablet | aiptek(4) | - |calcomp | Calcomp | | - |citron | Citron | citron(4) | - |digitaledge | DigitalEdge | | - |dmc | DMC | dmc(4) | - |dynapro | Dynapro | | - |elographics | EloGraphics | | - |fpit | Fujitsu Stylistic Tablet PCs | fpit(4) | - |hyperpen | Aiptek HyperPen 6000 | | - |js_x | JamStudio pentablet | js_x(4) | - |kbd | generic keyboards (alternate) | kbd(4) | - |keyboard | generic keyboards | keyboard(4) | - |microtouch | MicroTouch | | - |mouse | most mouse devices | mouse(4) | - |mutouch | MicroTouch | | - |palmax | Palmax PD1000/PD1100 | palmax(4) | - |penmount | PenMount | | - |spaceorb | SpaceOrb | | - |summa | SummaGraphics | | - |tek4957 | Tektronix 4957 tablet | tek4957(4) | - |ur98(*) | Union Reality UR-F98 headtracker | ur98(4) | - |void | dummy device | void(4) | - |wacom | Wacom tablets | wacom(4) | - +------------+----------------------------------+---------------------+ + +------------+-------------------------------------+---------------------+ + |Driver Name | Description | Further Information | + +------------+-------------------------------------+---------------------+ + |aiptek(*) | Aiptek USB tablet | aiptek(4) | + |calcomp | Calcomp | | + |citron | Citron | citron(4) | + |digitaledge | DigitalEdge | | + |dmc | DMC | dmc(4) | + |dynapro | Dynapro | | + |elographics | EloGraphics | | + |fpit | Fujitsu Stylistic Tablet PCs | fpit(4) | + |hyperpen | Aiptek HyperPen 6000 | | + |js_x | JamStudio pentablet | js_x(4) | + |kbd | generic keyboards (loadable module) | kbd(4) | + |keyboard | generic keyboards (builtin driver) | keyboard(4) | + |microtouch | MicroTouch | | + |mouse | most mouse devices | mouse(4) | + |mutouch | MicroTouch | | + |palmax | Palmax PD1000/PD1100 | palmax(4) | + |penmount | PenMount | | + |spaceorb | SpaceOrb | | + |summa | SummaGraphics | | + |tek4957 | Tektronix 4957 tablet | tek4957(4) | + |ur98(*) | Union Reality UR-F98 headtracker | ur98(4) | + |void | dummy device | void(4) | + |wacom | Wacom tablets | wacom(4) | + +------------+-------------------------------------+---------------------+ Drivers marked with (*) are available for Linux only. -4. Overview of X11R6.8 +4. Overview of X11R6.8.2 -On most platforms, X11R6.8 has a single X server binary called Xorg. This +On most platforms, X11R6.8.2 has a single X server binary called Xorg. This binary can either have one or more video and input drivers linked in stati- cally, or more usually, dynamically, and in that manner load the video drivers, input drivers, and other modules that are needed. -X11R6.8 has X server support for most UNIX® and UNIX-like operating systems +X11R6.8.2 has X server support for most UNIX® and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux and some BSD OSs on Alpha, PowerPC, IA-64, AMD64, Sparc, and Mips platforms, and for Darwin on PowerPC. @@ -433,7 +461,7 @@ A main benefit of this, is that when modules are updated, they do not need to be recompiled for every different operating system. The loader in version -6.8 has support for Intel (x86), Alpha and PowerPC platforms. It also has +6.8.2 has support for Intel (x86), Alpha and PowerPC platforms. It also has preliminary support for Sparc platforms. The X server makes use of modules for video drivers, X server extensions, @@ -476,14 +504,14 @@ 4.4 XAA The XFree86 Acceleration Architecture (XAA) was completely rewritten from -scratch for XFree86 4.x and is used in X11R6.8. Most drivers implement +scratch for XFree86 4.x and is used in X11R6.8.2. Most drivers implement acceleration by making use of the XAA module. The Xorg server will accept modules built either for XFree86 4.4 servers or its own. 4.5 Multi-head -Some multi-head configurations are supported in X11R6.8, primarily with mul- -tiple PCI/AGP cards. +Some multi-head configurations are supported in X11R6.8.2, primarily with +multiple PCI/AGP cards. One of the main problems is with drivers not sufficiently initialising cards that were not initialised at boot time. This has been improved somewhat with @@ -505,8 +533,8 @@ Xinerama is not enabled by default, and can be enabled with the +xinerama command line option for the X server. -Xinerama was included with X11R6.4. The version included in X11R6.8 was com- -pletely rewritten for improved performance and correctness. +Xinerama was included with X11R6.4. The version included in X11R6.8.2 was +completely rewritten for improved performance and correctness. Known problems: @@ -517,7 +545,7 @@ 4.7 DGA version 2 -DGA 2.0 is included in 6.8. Documentation for the client libraries can be +DGA 2.0 is included in 6.8.2. Documentation for the client libraries can be found in the XDGA(3) man page. A good degree of backwards compatibility with version 1.0 is provided. @@ -554,11 +582,11 @@ 4.10 XVideo Extension (Xv) -The XVideo extension is supported in X11R6.7.x. An XvQueryPortAttributes -function has been added as well as support for XvImages. XvImages are XIm- -ages in alternate color spaces such as YUV and can be passed to the server -through shared memory segments. This allows clients to display YUV data with -high quality hardware scaling and filtering. +The XVideo extension is supported in X11R6.7.x and newer releases. An +XvQueryPortAttributes function has been added as well as support for XvIm- +ages. XvImages are XImages in alternate color spaces such as YUV and can be +passed to the server through shared memory segments. This allows clients to +display YUV data with high quality hardware scaling and filtering. 4.11 X Rendering Extension (Render) @@ -589,20 +617,21 @@ To allow a graceful transition for applications moving from core text render- ing to the Render extension, Xft can use either the core rendering requests or the Render extension for text. See the section on FreeType support in Xft -for instructions on configuring X11R6.8 to use an existing FreeType installa- -tion. +for instructions on configuring X11R6.8.2 to use an existing FreeType instal- +lation. The Xft library uses configuration files, /etc/fonts/fonts.conf and /etc/fonts/local.conf, which contains information about which directories contain font files and also provides a sophisticated font aliasing mechanism. -Documentation for that file is included in the Xft(3) man page. +Documentation for that file is included in the Xft(3), fontconfig(3) and +fonts.conf(4) man pages. 4.11.2 Application Support For Anti-Aliased Text -Only four applications have been modified in X11R6.8 to work with the Render -extension and the Xft and FreeType libraries to provide anti-aliased text: -xterm, xditview, x11perf and xclock. Migration of other applications may -occur in future releases. +Only four applications have been modified in X11R6.8.2 to work with the Ren- +der extension and the Xft and FreeType libraries to provide anti-aliased +text: xterm, xditview, x11perf and xclock. Migration of other applications +may occur in future releases. By default, xterm uses core fonts through the standard core API. It has a command line option and associated resource to direct it to use Xft instead: @@ -645,7 +674,7 @@ o Please refer to xedit(1) for more details. - o XPrint support. + o Support for printing via Xprint. 4.14 Font support @@ -655,23 +684,23 @@ 4.15 TrueType support X11R6.7 came with two TrueType backends. The functionality from the `X-True- -Type' backend has been integrated into the `FreeType' backend which is -designed to transparently support all of the functionality from the `X-True- -Type' backend with the exception of the font encoding libraries; the -`FreeType' backend uses only the fontenc-based encoding system . +Type' (="XTT") backend has been integrated into the `FreeType' backend which +is designed to transparently support all of the functionality from the `X- +TrueType' backend with the exception of the font encoding libraries; the +`FreeType' backend uses only the fontenc-based encoding system. 4.16 CID font support -Support for CID-keyed fonts is included in X11R6.8 The CID-keyed font format -was designed by Adobe Systems for fonts with large -character sets. The CID-keyed font support in X11R6.8 was donated by SGI -. See the LICENSE document for a copy of the CID +Support for CID-keyed fonts is included in X11R6.8.2 The CID-keyed font for- +mat was designed by Adobe Systems for fonts with +large character sets. The CID-keyed font support in X11R6.8.2 was donated by +SGI . See the LICENSE document for a copy of the CID Font Code Public License. 4.17 Internationalisation of the scalable font backends -X11R6.8 has a ``fontenc'' layer to allow the scalable font backends to use a -common method of font re-encoding. This re-encoding makes it possible to +X11R6.8.2 has a ``fontenc'' layer to allow the scalable font backends to use +a common method of font re-encoding. This re-encoding makes it possible to uses fonts in encodings other than their their native encoding. This layer is used by the Type1, Speedo and FreeType backends. @@ -684,7 +713,7 @@ 4.19 Unicode/ISO 10646 support -What is included in X11R6.8 +What is included in X11R6.8.2 o All ``-misc-fixed-*'' BDF fonts are now available in the ISO10646-1 encoding and cover at least the 614 characters found in ISO @@ -717,8 +746,8 @@ 4.20 Xlib Compose file support and extensions -A more flexible Compose file processing system was added to Xlib in X11R6.8. -The compose file is searched for in the following order: +A more flexible Compose file processing system was added to Xlib in +X11R6.8.2. The compose file is searched for in the following order: 1. If the environment variable $XCOMPOSEFILE is set, its value is used as the name of the Compose file. @@ -765,14 +794,14 @@ 4.21 Bitstream Vera fonts -X11R6.8 includes the Bitstream Vera family of typefaces in TrueType format. +X11R6.8.2 includes the Bitstream Vera family of typefaces in TrueType format. This family includes the ``Bitstream Vera Sans'', ``Bitstream Vera Sans Mono'' and ``Bitstream Vera Serif'' in Roman and Bold varients as well as the ``Bitstream Vera Sans'' and ``Bitstream Vera Sans Mono'' in Oblique and Bold Oblique. These fonts include all of the glyphs needed for ISO 8859 parts 1 9 and 15. -The license terms for the Vera fonts are inclued in the file COPYRIGHT.Vera>. +The license terms for the Vera fonts are inclued in the file COPYRIGHT.Vera. 4.22 Luxi fonts from Bigelow and Holmes @@ -801,7 +830,7 @@ 5. Miscellaneous -This section describes other items of note for the X11R6.8 release. +This section describes other items of note for the X11R6.8.2 release. 5.1 Legacy keyboard driver phase-out @@ -862,22 +891,28 @@ 6. Attributions/Acknowledgements/Credits -This section lists the credits for the X11R6.8 release. For a more detailed -breakdown, refer to the ChangeLog file in the X.Org source tree, the +This section lists the credits for the X11R6.8.2 release. For a more +detailed breakdown, refer to the ChangeLog file in the X.Org source tree, the ChangeLog's in or the 'cvs log' information for individual source files." - These people contributed in some way to X11R6.8 - Paul Anderson, Eric Anholt, Daniel Berrange, Russ Blaine, Ryan - Breen, Alan Coopersmith, Michel Daenzer, David Dawes, Alex - Deucher, Stefan Dirsch, Egbert Eich, Rik Faith, Jim Gettys, - Alexander Gottwald, Mike A. Harris, John Harper, John Heasley, - Matthieu Herrb, Alan Hourihane, Kristian Høsberg, Harold L. Hunt - II, Adam Jackson, Deron Johnson, Ivan Kokshaysky, Stuart Kreit- - man, Peter Kunzman, Nolan Leake, Ryan Lortie, Andreas Luik, Tor- - rey T. Lyons, Roland Mainz, Guy Martin, Kevin E. Martin, Keith - Packard, Greg Parker, Aaron Plattner, Søren Sandmann, Ty Sarna, - Yu Shao, Bryan Stine, Owen Taylor, Travis Tilley, Ryan Underwood, - Ronny Vindenes, Chisato Yamauchi + These people contributed in some way to X11R6.8.2 + Paul Anderson, Eric Anholt, Dave Airlie, Donnie Berkholz, Daniel + Berrange, Thomas Biege, Russ Blaine, Ryan Breen, Alan Cooper- + smith, Jay Cotton, Michel Daenzer, David Dawes, Kevin DeKorte, + Alex Deucher, Stefan Dirsch, Egbert Eich, Rik Faith, Jim Gettys, + Giuseppe Ghibò, Thomas Gilg, Alexander Gottwald, Mike A. Harris, + John Harper, John Heasley, Jeremy Huddleston, Matthieu Herrb, + Alan Hourihane, Jay Hobson, Matthias Hopf, Kristian Høsberg, + Harold L. Hunt II, Adam Jackson, Daniel Jacobowitz, Deron John- + son, Masaki Katakai, Stephen Kennedy, Ivan Kokshaysky, Stuart + Kreitman, Peter Kunzman, Julien Lafon, Nolan Leake, Ryan Lortie, + Andreas Luik, Torrey T. Lyons, Roland Mainz, Guy Martin, Kevin E. + Martin, Dan McNichol, Dagfinn Ilmari Mannsaker, Simon Montagu, + Keith Packard, Greg Parker, Drew Parsons, Aaron Plattner, Branden + Robinson, Søren Sandmann, Ty Sarna, Yu Shao, Gustavo Noronha + Silva, Bryan Stine, Owen Taylor, Travis Tilley, Ryan Underwood, + Ronny Vindenes, Chisato Yamauchi, Mark Vojkovich, Tim Yamin, Hui + Yu The X Window System has been a collaborative effort from its inception. Our apologies for anyone or organization inadvertently overlooked. Many individ- @@ -886,105 +921,103 @@ This product includes software developed by: Paul Anderson, Michael Bax, Jehan Bing, Peter Breitenlohner, Alan - Coopersmith, Egbert Eich, John Dennis, Fabrizio Gennari, Jim Get- - tys, Alexander Gottwald, Ralf Habacker Mike Harris, Mattheiu - Herrb Alan Hourihane, Harold L Hunt II, Elliot Lee, Jeremy Katz, - Kaleb Keithley, Stuart Kreitman, Andreas Luik, Torrey Lyons, - Roland Mainz, Kevin E. Martin, Takuma Murakami, Kensuke Mat- - suzaki, Keith Packard, Ivan Pascal, Earle F. Philhower III, Ben- - jamin Rienfenstahl, Leon Shiman, Toshimitsu Tanaka, Nicholas - Wourms. - - 2d3d Inc., Aaron Plattner, Adam de Boor, Adam Jackson, Adobe Sys- - tems Inc., After X-TT Project, AGE Logic Inc., Alan Coopersmith, - Alan Cox, Alan Hourihane, Alexander Gottwald, Alex Deucher, - Andreas Luik, Andreas Monitzer, Andrew C Aitchison, Andy Ritger, - Ani Joshi, Anton Zioviev, Apollo Computer Inc., Apple Computer - Inc., Ares Software Corp., AT&T Inc., ATI Technologies Inc., Ben- - jamin Rienfenstahl, Bigelow and Holmes, Bill Reynolds, Bitstream - Inc., Bitstream, Inc, Brian Fundakowski Feldman, Brian Goines, - Brian Paul, Bruno Haible, Bryan Stine, Charles Murcko, Chen - Xiangyang, Chisato Yamauchi, Chris Constello, Christian Zietz, - Cognition Corp., Compaq Computer Corporation, Concurrent Computer - Corporation, Conectiva S.A., Corin Anderson, Craig Struble, Dae- - woo Electronics Co. Ltd., Dale Schumacher, Damien Miller, Daniel - Berrange, Daniel Stone, Daniver Limited, Daryll Strauss, Data - General Corporation, David Bateman, David Dawes, David E. Wexel- - blat, David Holland, David J. McKay, David McCullough, David Mos- - berger-Tang, David S. Miller, Davor Matic, Deron Johnson, Digital - Equipment Corporation, Dirk Hohndel, Doug Anson, Earle F. Phil- - hower III, Edouard TISSERANT, Eduardo Horvath, Egbert Eich, - Elliot Lee, Eric Anholt, Eric Fortune, Eric Sunshine, Erik For- - tune, Erik Nygren, Evans & Sutherland Computer Corporation, Fabio - Massimo Di Nitto Fabrizio Gennari, Finn Thoegersen, Frederic Lep- - ied, Free Software Foundation Inc., Fujitsu Limited, Fujitsu Open - Systems Solutions Inc., Fuji Xerox Co. Ltd., Geert Uytterhoeven, - Gerrit Jan Akkerman, Gerry Toll, Glenn G. Lai, GNOME Foundation, - Go Watanabe, Gregory Mokhin, Greg Parker, GROUPE BULL, Guy Mar- - tin, Hans Oey, Harald Koenig, Harm Hanemaayer, Harold L Hunt II, - Harry Langenbacher, Henry A. Worth, Hewlett-Packard Company, - Hitachi Ltd, Holger Veit, Howard Greenwell, Hummingbird Communi- - cations Ltd., IBM Corporation, Intel Corporation, INTERACTIVE - Systems Corporation, International Business Machines Corp., Itai - Nahshon, Ivan Kokshaysky, Ivan Pascal, Jakub Jelinek, James Tsil- - las, Jason Bacon, Jean-loup Gailly, Jeff Kirk, Jeffrey Hsu, Jehan - Bing, Jeremy Katz, Jim Gettys, Jim Tsillas, J. Kean Johnston, - John Dennis, John Harper, John Heasley, Jon Block, Jon Tombs, - Jorge Delgado, Joseph Friedman, Joseph V. Moss, Juliusz - Chroboczek, Jyunji Takagi, Kaleb Keithley, Kaleb S. Keithley, - Kazushi (Jam) Marukawa, Kazuyuki (ikko-) Okamoto, Kean Johnston. - Keith Packard, Keith Packard, Keith Whitwell, Kensuke Matsuzaki, - Kristian Høgsberg, Larry Wall, Lawrence Berkeley Laboratory, - Lennart Augustsson, Leon Shiman, Lexmark International Inc., - Linus Torvalds, Luc Verhaegen, Machine Vision Holdings Inc., Man- - fred Brands, Marc Aurele La France Mark Adler, Mark J. Kilgard, - Mark Leisher, Mark Smulders, Mark Vojkovich, Massachusetts Insti- - tute Of Technology, Matrox Graphics, Mattheiu Herrb Matthew - Grossman, Matthieu Herrb, Metro Link Inc., Michael Bax, Michael - H. Schimek, Michael P. Marking, Michael Schimek, Michael Smith, - Michel Daenzer, Mike A. Harris, Mike Harris, Ming Yu, MIPS Com- - puter Systems Inc., National Semiconductor, NCR Corporation Inc., - Netscape Communications Corporation, Network Computing Devices - Inc., Nicholas Wourms, Noah Levitt, Nolan Leake, Novell Inc., - Nozomi YTOW, NTT Software Corporation, Number Nine Computer - Corp., Number Nine Visual Technologies, NVIDIA Corp., Oivier - Danet, Oki Technosystems Laboratory Inc., OMRON Corporation, Open - Software Foundation, Orest Zborowski, Owen Taylor, Pablo Saratx- - aga, Panacea Inc., Panagiotis Tsirigotis, Paolo Severini, Pascal - Haible, Patrick Lecoanet, Patrick Lerda, Paul Anderson, Paul - Elliott, Peter Breitenlohner, Peter Kunzmann, Peter Trattler, - Philip Homburg, Precision Insight Inc., Prentice Hall, Quarter- - deck Office Systems, Ralf Habacker Randy Hendry, Ranier Keller, - Red Hat Inc., Regents of the University of California, Regis - Cridlig, Rene Cougnenc, Richard A. Hecker, Richard Burdick, Rich - Murphey, Rickard E. Faith, Rik Faith, Robert Baron, Robert - Chesler, Robert Millan. Robert V. Baron, Robin Cutshaw, Roland - Mainz, Ronny Vindenes, Russ Blaine, Ryan Breen, Ryan Lortie, Ryan - Underwood, S3 Graphics Inc., Sam Leffler, SciTech Software, Scott - Laird, Sebastien Marineau, Shigehiro Nomura, ShoGraphics Inc., - Shunsuke Akiyama, Silicon Graphics Computer Systems Inc., Silicon - Integrated Systems Corp Inc., Silicon Motion Inc., Simon P. - Cooper, Snitily Graphics Consulting Services, Sony Corporation, - Søren Sandmann, SRI, Stanislav Brabec, Stefan Dirsch, Stephan - Dirsch, Stephan Lang, Steven Lang, Stuart Kreitman, Sun Microsys- - tems Inc., SunSoft Inc., SuSE Inc, Sven Luther, Takis Psarogian- - nakopoulos, Takuma Murakami, Takuya SHIOZAKI, Tektronix Inc., The - DOS-EMU-Development-Team, The Institute of Software Academia - Sinica, The NetBSD Foundation, Theo de Raadt, Theodore Ts'o, The - Open Group, The Open Software Foundation, The Regents of the Uni- - versity of California, The Santa Cruz Operation Inc., The Weather - Channel Inc., The X Consortium, The XFree86 Project Inc., Thomas - E. Dickey, Thomas G. Lane, Thomas Hellström, Thomas Mueller, - Thomas Roell, Thomas Thanner, Thomas Winischhofer, Thomas Wol- - fram, Thorsten.Ohl, Tiago Gons, Todd C. Miller, Tomohiro KUBOTA, - Torrey Lyons, Torrey T. Lyons, TOSHIBA Corp., Toshimitsu Tanaka, - Travis Tilley, Tungsten Graphics Inc., Ty Sarna, UCHIYAMA - Yasushi, Unicode Inc., UniSoft Group Limited, University of Utah, - UNIX System Laboratories Inc., URW++ GmbH, VA Linux Systems, VIA - Technologies Inc., Video Electronics Standard, VMware Inc., Vrije - Universiteit, Wittawat Yamwong, Wyse Technology Inc., X Consor- - tium, Xi Graphics Inc., X-Oz Technologies, X-TrueType Server Pro- - ject and their contributors, Yu Shao, + Coopersmith, Thomas Dickey, Egbert Eich, John Dennis, Fabrizio + Gennari, Jim Gettys, Alexander Gottwald, Ralf Habacker, Mike Har- + ris, Mattheiu Herrb, Alan Hourihane, Harold L Hunt II, Elliot + Lee, Jeremy Katz, Kaleb Keithley, Stuart Kreitman, Andreas Luik, + Torrey Lyons, Roland Mainz, Kevin E. Martin, Takuma Murakami, + Kensuke Matsuzaki, Keith Packard, Ivan Pascal, Earle F. Philhower + III, Benjamin Rienfenstahl, Leon Shiman, Toshimitsu Tanaka, + Nicholas Wourms, 2d3d Inc., Aaron Plattner, Adam de Boor, Adam + Jackson, Adobe Systems Inc., After X-TT Project, AGE Logic Inc., + Alan Coopersmith, Alan Cox, Alan Hourihane, Alexander Gottwald, + Alex Deucher, Andreas Luik, Andreas Monitzer, Andrew C Aitchison, + Andy Ritger, Ani Joshi, Anton Zioviev, Apollo Computer Inc., + Apple Computer Inc., Ares Software Corp., AT&T Inc., ATI Tech- + nologies Inc., Benjamin Rienfenstahl, Bigelow and Holmes, Bill + Reynolds, Bitstream Inc., Bitstream, Inc, Brian Fundakowski Feld- + man, Brian Goines, Brian Paul, Bruno Haible, Bryan Stine, Charles + Murcko, Chen Xiangyang, Chisato Yamauchi, Chris Constello, Chris- + tian Zietz, Cognition Corp., Compaq Computer Corporation, Concur- + rent Computer Corporation, Conectiva S.A., Corin Anderson, Craig + Struble, Daewoo Electronics Co. Ltd., Dale Schumacher, Damien + Miller, Daniel Berrange, Daniel Stone, Daniver Limited, Daryll + Strauss, Data General Corporation, David Bateman, David Dawes, + David E. Wexelblat, David Holland, David J. McKay, David McCul- + lough, David Mosberger-Tang, David S. Miller, Davor Matic, Deron + Johnson, Digital Equipment Corporation, Dirk Hohndel, Doug Anson, + Earle F. Philhower III, Edouard TISSERANT, Eduardo Horvath, + Egbert Eich, Elliot Lee, Eric Anholt, Eric Fortune, Eric Sun- + shine, Erik Fortune, Erik Nygren, Evans & Sutherland Computer + Corporation, Fabio Massimo Di Nitto Fabrizio Gennari, Finn + Thoegersen, Frederic Lepied, Free Software Foundation Inc., + Fujitsu Limited, Fujitsu Open Systems Solutions Inc., Fuji Xerox + Co. Ltd., Geert Uytterhoeven, Gerrit Jan Akkerman, Gerry Toll, + Glenn G. Lai, GNOME Foundation, Go Watanabe, Gregory Mokhin, Greg + Parker, GROUPE BULL, Guy Martin, Hans Oey, Harald Koenig, Harm + Hanemaayer, Harold L Hunt II, Harry Langenbacher, Henry A. Worth, + Hewlett-Packard Company, Hitachi Ltd, Holger Veit, Howard Green- + well, Hummingbird Communications Ltd., IBM Corporation, Intel + Corporation, INTERACTIVE Systems Corporation, International Busi- + ness Machines Corp., Itai Nahshon, Ivan Kokshaysky, Ivan Pascal, + Jakub Jelinek, James Tsillas, Jason Bacon, Jean-loup Gailly, Jeff + Kirk, Jeffrey Hsu, Jehan Bing, Jeremy Katz, Jim Gettys, Jim Tsil- + las, J. Kean Johnston, John Dennis, John Harper, John Heasley, + Jon Block, Jon Tombs, Jorge Delgado, Joseph Friedman, Joseph V. + Moss, Juliusz Chroboczek, Jyunji Takagi, Kaleb Keithley, Kaleb S. + Keithley, Kazushi (Jam) Marukawa, Kazuyuki (ikko-) Okamoto, Kean + Johnston. Keith Packard, Keith Packard, Keith Whitwell, Kensuke + Matsuzaki, Kristian Høgsberg, Larry Wall, Lawrence Berkeley Labo- + ratory, Lennart Augustsson, Leon Shiman, Lexmark International + Inc., Linus Torvalds, Luc Verhaegen, Machine Vision Holdings + Inc., Manfred Brands, Marc Aurele La France Mark Adler, Mark J. + Kilgard, Mark Leisher, Mark Smulders, Mark Vojkovich, Mas- + sachusetts Institute Of Technology, Matrox Graphics, Mattheiu + Herrb Matthew Grossman, Matthieu Herrb, Metro Link Inc., Michael + Bax, Michael H. Schimek, Michael P. Marking, Michael Schimek, + Michael Smith, Michel Daenzer, Mike A. Harris, Mike Harris, Ming + Yu, MIPS Computer Systems Inc., National Semiconductor, NCR Cor- + poration Inc., Netscape Communications Corporation, Network Com- + puting Devices Inc., Nicholas Wourms, Noah Levitt, Nolan Leake, + Novell Inc., Nozomi YTOW, NTT Software Corporation, Number Nine + Computer Corp., Number Nine Visual Technologies, NVIDIA Corp., + Oivier Danet, Oki Technosystems Laboratory Inc., OMRON Corpora- + tion, Open Software Foundation, Orest Zborowski, Owen Taylor, + Pablo Saratxaga, Panacea Inc., Panagiotis Tsirigotis, Paolo Sev- + erini, Pascal Haible, Patrick Lecoanet, Patrick Lerda, Paul + Anderson, Paul Elliott, Peter Breitenlohner, Peter Kunzmann, + Peter Trattler, Philip Homburg, Precision Insight Inc., Prentice + Hall, Quarterdeck Office Systems, Ralf Habacker Randy Hendry, + Ranier Keller, Red Hat Inc., Regents of the University of Cali- + fornia, Regis Cridlig, Rene Cougnenc, Richard A. Hecker, Richard + Burdick, Rich Murphey, Rickard E. Faith, Rik Faith, Robert Baron, + Robert Chesler, Robert Millan. Robert V. Baron, Robin Cutshaw, + Roland Mainz, Ronny Vindenes, Russ Blaine, Ryan Breen, Ryan Lor- + tie, Ryan Underwood, S3 Graphics Inc., Sam Leffler, SciTech Soft- + ware, Scott Laird, Sebastien Marineau, Shigehiro Nomura, Sho- + Graphics Inc., Shunsuke Akiyama, Silicon Graphics Computer Sys- + tems Inc., Silicon Integrated Systems Corp Inc., Silicon Motion + Inc., Simon P. Cooper, Snitily Graphics Consulting Services, Sony + Corporation, Søren Sandmann, SRI, Stanislav Brabec, Stefan + Dirsch, Stephan Dirsch, Stephan Lang, Steven Lang, Stuart Kreit- + man, Sun Microsystems Inc., SunSoft Inc., SuSE Inc, Sven Luther, + Takis Psarogiannakopoulos, Takuma Murakami, Takuya SHIOZAKI, Tek- + tronix Inc., The DOS-EMU-Development-Team, The Institute of Soft- + ware Academia Sinica, The NetBSD Foundation, Theo de Raadt, + Theodore Ts'o, The Open Group, The Open Software Foundation, The + Regents of the University of California, The Santa Cruz Operation + Inc., The Weather Channel Inc., The X Consortium, The XFree86 + Project Inc., Thomas E. Dickey, Thomas G. Lane, Thomas Hellström, + Thomas Mueller, Thomas Roell, Thomas Thanner, Thomas Winis- + chhofer, Thomas Wolfram, Thorsten.Ohl, Tiago Gons, Todd C. + Miller, Tomohiro KUBOTA, Torrey Lyons, Torrey T. Lyons, TOSHIBA + Corp., Toshimitsu Tanaka, Travis Tilley, Tungsten Graphics Inc., + Ty Sarna, UCHIYAMA Yasushi, Unicode Inc., UniSoft Group Limited, + University of Utah, UNIX System Laboratories Inc., URW++ GmbH, VA + Linux Systems, VIA Technologies Inc., Video Electronics Standard, + VMware Inc., Vrije Universiteit, Wittawat Yamwong, Wyse Technol- + ogy Inc., X Consortium, Xi Graphics Inc., X-Oz Technologies, X- + TrueType Server Project and their contributors, Yu Shao, This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. @@ -1005,4 +1038,4 @@ and its contributors. -$XdotOrg: xc/RELNOTES,v 1.5 2004/09/04 00:22:32 kem Exp $ +$XdotOrg: xc/RELNOTES,v 1.5.2.3 2005/02/08 23:54:04 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/Imakefile x11r682/xc/config/cf/Imakefile --- xc/config/cf/Imakefile 2004-08-10 00:37:21.000000000 +0200 +++ xc/config/cf/Imakefile 2004-12-15 04:26:31.000000000 +0100 @@ -26,7 +26,8 @@ xorgsite.def \ $(VERSIONDEFFILES) \ $(HOSTDEFFILES) \ -site.def +site.def \ +xorgversion.def RULEFILES = \ Imake.rules \ diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/OpenBSDLib.tmpl x11r682/xc/config/cf/OpenBSDLib.tmpl --- xc/config/cf/OpenBSDLib.tmpl 2004-09-02 03:10:28.000000000 +0200 +++ xc/config/cf/OpenBSDLib.tmpl 2004-12-13 04:20:44.000000000 +0100 @@ -175,7 +175,7 @@ # elif OSMajorVersion > 3 || OSMajorVersion == 3 && OSMinorVersion >= 6 # ifndef SharedX11Rev -# define SharedX11Rev 8.0 +# define SharedX11Rev 8.1 # endif # ifndef SharedXThrStubRev # define SharedXThrStubRev 8.0 @@ -225,22 +225,22 @@ # endif # endif # ifndef SharedGlxRev -# define SharedGlxRev 3.0 +# define SharedGlxRev 3.1 # endif # ifndef SharedOSMesaRev -# define SharedOSMesaRev 5.0 +# define SharedOSMesaRev 6.0 # endif # ifndef SharedGLwRev # define SharedGLwRev 3.0 # endif # ifndef SharedXrenderRev -# define SharedXrenderRev 3.0 +# define SharedXrenderRev 3.1 # endif # ifndef SharedXrandrRev # define SharedXrandrRev 4.0 # endif # ifndef SharedXcursorRev -# define SharedXcursorRev 2.0 +# define SharedXcursorRev 2.2 # endif # ifndef SharedXfontcacheRev # define SharedXfontcacheRev 3.0 @@ -273,7 +273,7 @@ # define SharedXawRev 9.0 # endif # ifndef SharedXaw6Rev -# define SharedXaw6Rev 8.0 +# define SharedXaw6Rev 8.1 # endif # ifndef SharedXiRev # define SharedXiRev 8.0 @@ -294,7 +294,7 @@ # define SharedFSRev 8.0 # endif # ifndef SharedFontRev -# define SharedFontRev 3.0 +# define SharedFontRev 4.0 # endif # ifndef SharedFontEncRev # define SharedFontEncRev 3.0 @@ -303,16 +303,16 @@ # define SharedXpmRev 6.0 # endif # ifndef SharedFreetype2Rev -# define SharedFreetype2Rev 12.0 +# define SharedFreetype2Rev 13.0 # endif # ifndef SharedExpatRev # define SharedExpatRev 5.0 # endif # ifndef SharedXft1Rev -# define SharedXft1Rev 2.0 +# define SharedXft1Rev 3.0 # endif # ifndef SharedXftRev -# define SharedXftRev 4.0 +# define SharedXftRev 5.0 # endif # ifndef SharedFontconfigRev # define SharedFontconfigRev 2.0 diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/X11.tmpl x11r682/xc/config/cf/X11.tmpl --- xc/config/cf/X11.tmpl 2004-09-03 18:18:18.000000000 +0200 +++ xc/config/cf/X11.tmpl 2005-02-01 05:07:39.000000000 +0100 @@ -1,6 +1,6 @@ XCOMM ---------------------------------------------------------------------- XCOMM X Window System Build Parameters and Rules -XCOMM $XdotOrg: xc/config/cf/X11.tmpl,v 1.35 2004/09/03 16:18:18 kem Exp $ +XCOMM $XdotOrg: xc/config/cf/X11.tmpl,v 1.35.2.3 2005/02/01 04:07:39 gisburn Exp $ XCOMM $Xorg: X11.tmpl,v 1.6 2000/08/17 19:41:46 cpqbld Exp $ XCOMM XCOMM @@ -473,7 +473,10 @@ #define BuildCup YES #endif #ifndef HasPlugin -#define HasPlugin NO +/* Browser plugins are shared libraries - only build them if the OS + * supports shared libs. + */ +#define HasPlugin HasSharedLibraries #endif #ifndef BuildPlugin #define BuildPlugin HasPlugin @@ -680,6 +683,10 @@ #define BuildXevieLibrary !BuildServersOnly #endif +#ifndef BuildRootless +#define BuildRootless NO +#endif + #ifndef BuildXterm #define BuildXterm BuildClients #endif @@ -1237,6 +1244,14 @@ #endif #endif +#ifndef RootlessDefines +#if BuildRootless +#define RootlessDefines -DROOTLESS +#else +#define RootlessDefines /**/ +#endif +#endif + #ifndef SitePervasiveExtensionDefines #define SitePervasiveExtensionDefines /**/ #endif @@ -1247,7 +1262,8 @@ XF86BigfontExtensionDefines DPMSDefines \ LowMemDefines XprintDefines XineramaDefines \ SitePervasiveExtensionDefines RenderDefines RandRDefines \ - XfixesDefines XDamageDefines CompositeDefines XevieDefines + XfixesDefines XDamageDefines CompositeDefines XevieDefines \ + RootlessDefines #endif #ifndef SiteExtensionDefines #define SiteExtensionDefines /**/ diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/cygwin.cf x11r682/xc/config/cf/cygwin.cf --- xc/config/cf/cygwin.cf 2004-09-03 18:18:18.000000000 +0200 +++ xc/config/cf/cygwin.cf 2005-02-02 00:55:56.000000000 +0100 @@ -1,15 +1,17 @@ /* Cygwin/X vendor strings and version */ +#include "xorgversion.def" + #ifndef CygxVersionMajor -# define CygxVersionMajor 6 +# define CygxVersionMajor XORG_VERSION_MAJOR #endif #ifndef CygxVersionMinor -# define CygxVersionMinor 8 +# define CygxVersionMinor XORG_VERSION_MINOR #endif #ifndef CygxVersionPatch -# define CygxVersionPatch 0 +# define CygxVersionPatch XORG_VERSION_PATCH #endif #ifndef CygxVersionSnap -# define CygxVersionSnap 0 +# define CygxVersionSnap XORG_VERSION_SNAP #endif #ifndef CygxVersionServer # define CygxVersionServer 0 @@ -329,6 +331,7 @@ # define XWinMultiWindowDefines #endif /* BuildXWinMultiWindow */ #if BuildXWinMultiWindowExtWM +# define BuildRootless YES # define XWinMultiWindowExtWMDefines -DXWIN_MULTIWINDOWEXTWM #else /* BuildXWinMultiWindowExtWM */ # define XWinMultiWindowExtWMDefines diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/darwin.cf x11r682/xc/config/cf/darwin.cf --- xc/config/cf/darwin.cf 2004-09-02 03:23:45.000000000 +0200 +++ xc/config/cf/darwin.cf 2004-12-15 05:53:05.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/config/cf/darwin.cf,v 1.4 2004/09/02 01:23:45 kem Exp $ +XCOMM $XdotOrg: xc/config/cf/darwin.cf,v 1.4.2.1 2004/12/15 04:53:05 gisburn Exp $ XCOMM platform: $XFree86: xc/config/cf/darwin.cf,v 1.50 2004/01/20 23:54:50 torrey Exp $ /* Darwin / Mac OS X configuration by John Carmack */ @@ -133,6 +133,7 @@ # define GlxExtraDefines -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL GlxArchDefines # endif +# define BuildRootless YES #define BuildAppleWMLibrary YES #endif /* DarwinQuartzSupport */ diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/sun.cf x11r682/xc/config/cf/sun.cf --- xc/config/cf/sun.cf 2004-08-19 18:28:42.000000000 +0200 +++ xc/config/cf/sun.cf 2005-01-13 02:18:47.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/config/cf/sun.cf,v 1.9 2004/08/19 16:28:42 kem Exp $ +XCOMM $XdotOrg: xc/config/cf/sun.cf,v 1.9.2.1 2005/01/13 01:18:47 gisburn Exp $ XCOMM platform: $Xorg: sun.cf,v 1.4 2000/08/17 19:41:48 cpqbld Exp $ @@ -240,6 +240,9 @@ # endif # endif #else +# if HasSunC +# define CompilerServerExtraDefines $(XF86SRC)/os-support/sunos/sparcv8plus.il +# endif # define HasPlugin YES #endif diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/xorg.cf x11r682/xc/config/cf/xorg.cf --- xc/config/cf/xorg.cf 2004-09-04 00:00:10.000000000 +0200 +++ xc/config/cf/xorg.cf 2005-01-24 04:11:42.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/config/cf/xorg.cf,v 1.27 2004/09/03 22:00:10 kem Exp $ +XCOMM $XdotOrg: xc/config/cf/xorg.cf,v 1.27.2.6 2005/01/24 03:11:42 gisburn Exp $ /* * This configuration file contains all of the configuration * information for the Xorg based X Servers. @@ -11,13 +11,7 @@ /* Get and set version information. */ #include "date.def" - -#define XORG_VERSION_MAJOR 6 -#define XORG_VERSION_MINOR 8 -#define XORG_VERSION_PATCH 0 -#define XORG_VERSION_SNAP 0 - -#define XORG_DATE "8 September 2004" +#include "xorgversion.def" #if !defined(XorgVersionString) && \ defined(XORG_VERSION_MAJOR) && defined(XORG_VERSION_MINOR) && \ @@ -421,14 +415,17 @@ # ifndef DriDrivers # ifndef ia64Architecture -# define i386DRIDrivers i810 i915 +# define i386DRIDrivers i810 i915 sis tdfx # else + /* + * The tdfx driver needs Glide, which is not available for IA64. + * SiS is 64-bit unclean as of this writing. + */ # define i386DRIDrivers /**/ # endif -# define DriDrivers gamma i386DRIDrivers mga r128 radeon r200 \ - sis tdfx +# define DriDrivers gamma i386DRIDrivers mga r128 radeon r200 # endif -#endif +#endif /* i386Architecture || ia64Architecture */ #if defined(AMD64Architecture) /* vgahw module */ @@ -447,15 +444,17 @@ # define XF86CardDrivers mga glint nv tga s3 s3virge sis rendition \ neomagic tdfx savage cirrus tseng trident \ chips apm i128 ati ark cyrix siliconmotion \ - vga dummy vesa \ + vga dummy vesa i810 \ XF86OSCardDrivers XF86ExtraCardDrivers # endif -/* The tdfx driver needs Glide, which is not available for AMD64. SiS is 64-bit - * unclean as of this writing. +/* + * The tdfx driver needs Glide, which is not available for AMD64. + * SiS is 64-bit unclean as of this writing. */ -# define DriDrivers gamma mga r128 radeon r200 - +# ifndef DriDrivers +# define DriDrivers i915 gamma mga r128 radeon r200 +# endif #endif /*AMD64Arcitecture*/ /* SPARC and UltraSPARC drivers */ @@ -540,7 +539,7 @@ DevelDrivers \ XF86OSCardDrivers XF86ExtraCardDrivers # endif -#endif +#endif /* OpenBSDArchitecture && Sparc64Architecture */ /* MIPS drivers */ @@ -564,7 +563,7 @@ DevelDrivers newport \ XF86OSCardDrivers XF86ExtraCardDrivers # endif -#endif +#endif /* MipsArchitecture */ /* * DEC Alpha drivers @@ -589,11 +588,14 @@ savage nv cirrus DevelDrivers siliconmotion \ vga XF86OSCardDrivers XF86ExtraCardDrivers # endif -/* SiS is 64-bit unclean as of this writing. */ +/* + * Glide is available for Alpha, therefore build tdfx DRM module. + * SiS is 64-bit unclean as of this writing. + */ # ifndef DriDrivers # define DriDrivers gamma tdfx mga r128 radeon r200 # endif -#endif +#endif /* AlphaArchitecture */ /* * Motorola 68k and PowerPC drivers @@ -623,10 +625,11 @@ DevelDrivers vga \ XF86OSCardDrivers XF86ExtraCardDrivers # endif +/* The tdfx driver needs Glide, which is not available for PPC. */ # ifndef DriDrivers -# define DriDrivers gamma tdfx mga r128 radeon r200 +# define DriDrivers gamma mga r128 radeon r200 # endif -#endif +#endif /* PpcArchitecture || Mc68020Architecture */ /* * Intel StrongARM and Hewlett-Packard PA-RISC @@ -672,10 +675,6 @@ # ifndef XorgServer # define XorgServer YES # endif -/* Amiga framebuffer module */ -# ifndef XF86AFB -# define XF86AFB NO -# endif /* 1bpp module */ # ifndef XF1Bpp # define XF1Bpp NO @@ -700,10 +699,6 @@ # ifndef XFShadowFB # define XFShadowFB YES # endif -/* vgahw module */ -# ifndef XF86VgaHw -# define XF86VgaHw NO -# endif /* fbdevhw module */ # ifndef XF86FBDevHw # define XF86FBDevHw YES @@ -728,11 +723,23 @@ # ifndef XF86RAC # define XF86RAC YES # endif - /* int10 module */ # ifndef XF86Int10 # define XF86Int10 YES # endif +/* vbe module */ +# ifndef XF86VBE +# define XF86VBE YES +# endif + +/* vgahw module */ +# ifndef XF86VgaHw +# define XF86VgaHw NO +# endif +/* Amiga framebuffer module */ +# ifndef XF86AFB +# define XF86AFB NO +# endif # ifndef DevelDrivers # if XFree86Devel @@ -756,7 +763,7 @@ # ifndef DriDrivers # define DriDrivers gamma r128 # endif -#endif +#endif /* Ppc64Architecture */ /* * For Mips/Arc platforms, the default is to build all modules which @@ -1550,7 +1557,7 @@ # endif #endif -#if (GccMajorVersion == 3) && (GccMinorVersion >= 1) +#if ((GccMajorVersion == 3) && (GccMinorVersion >= 1)) || (GccMajorVersion > 3) # define GccAliasingArgs -fno-strict-aliasing #else # define GccAliasingArgs /* */ diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/xorgsite.def x11r682/xc/config/cf/xorgsite.def --- xc/config/cf/xorgsite.def 2004-08-21 04:06:44.000000000 +0200 +++ xc/config/cf/xorgsite.def 2004-12-13 15:27:33.000000000 +0100 @@ -24,7 +24,7 @@ * The host.def file will never be patched. * * The distributed version of this file MUST contain no uncommented - * definitions. Default definitions belong in xfree86.cf, or .cf + * definitions. Default definitions belong in xorg.cf, or .cf * files. */ /******************************************************************************/ @@ -71,7 +71,7 @@ /* * Set the default server (ie the one that gets the sym-link to "X") * -#define ServerToInstall XFree86 +#define ServerToInstall Xorg */ /* diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/xorgversion.def x11r682/xc/config/cf/xorgversion.def --- xc/config/cf/xorgversion.def 1970-01-01 01:00:00.000000000 +0100 +++ xc/config/cf/xorgversion.def 2005-02-09 19:03:20.000000000 +0100 @@ -0,0 +1,6 @@ +#define XORG_VERSION_MAJOR 6 +#define XORG_VERSION_MINOR 8 +#define XORG_VERSION_PATCH 2 +#define XORG_VERSION_SNAP 0 + +#define XORG_DATE "9 February 2005" diff -N -x '*CVS*' -r -u x11r680/xc/config/cf/xprint_site.def x11r682/xc/config/cf/xprint_site.def --- xc/config/cf/xprint_site.def 2004-05-05 00:58:59.000000000 +0200 +++ xc/config/cf/xprint_site.def 2004-12-13 15:27:33.000000000 +0100 @@ -90,7 +90,6 @@ #define BuildGlxExt NO #define BuildXIE NO /* X extensions not needed */ -#define BuildDBE NO #define BuildXKB NO #define BuildRECORD NO #define BuildDPMS NO @@ -136,7 +135,7 @@ #endif /* BuildXprintAppsOnly */ /* Set our own XVendorString/XVendorRelease - * (and to avoid that xfree86.cf sets it's own stuff here) */ + * (and to avoid that xorg.cf sets it's own stuff here) */ #define XVendorString "xprint.mozdev.org" #define XVendorRelease 100000 diff -N -x '*CVS*' -r -u x11r680/xc/config/docbook/docbookconv.sh x11r682/xc/config/docbook/docbookconv.sh --- xc/config/docbook/docbookconv.sh 2004-04-23 20:42:00.000000000 +0200 +++ xc/config/docbook/docbookconv.sh 2004-12-15 08:17:48.000000000 +0100 @@ -1,5 +1,7 @@ #!/bin/sh +#set -x + fatal_error() { echo "$1" 1>&2 @@ -97,8 +99,15 @@ fi ;; "man") - cp "${MYCURRDIR}/${infile}" "${infile}.tmp" - ${docbook2man} "${infile}.tmp" + if [ "${infile}" != "${infile%.sgml}" ] ; then + #cp "${MYCURRDIR}/${infile}" "${infile%.sgml}.xml" + #${docbook2man} --network "${infile%.sgml}.xml" + cp "${MYCURRDIR}/${infile}" "${infile}.tmp" + ${docbook2man} --network "${infile}.tmp" + else + cp "${MYCURRDIR}/${infile}" "${infile}.tmp" + ${docbook2man} --network "${infile}.tmp" + fi manfile="$(ls -1 ${infile%.*}.__*)" verbose_echo "manfile=${manfile}" diff -N -x '*CVS*' -r -u x11r680/xc/doc/hardcopy/XPRINT/Xprint_FAQ.html x11r682/xc/doc/hardcopy/XPRINT/Xprint_FAQ.html --- xc/doc/hardcopy/XPRINT/Xprint_FAQ.html 2004-08-11 19:51:23.000000000 +0200 +++ xc/doc/hardcopy/XPRINT/Xprint_FAQ.html 2004-12-15 08:17:48.000000000 +0100 @@ -3,7 +3,7 @@

Version: 0.9.1

- Last-Modified: 2004/06/14 08:15:16 + Last-Modified: 2004/10/08 01:05:21

Maintained-by: Roland Mainz @@ -289,48 +289,48 @@ What is going wrong here ?

Q: What is XpStartDoc for ? -
Q: +
Q: How does the XLFD for printer-builtin fonts look like ? / How can I find/identify printer-builtin fonts ? -
Q: +
Q: How can I scale images using the Xprint API ? -
Q: +
Q: Can I pass my own PostScript code (fragment) to the print spooler instead of letting Xprt's PostScript DDX generate it ? -
Q: +
Q: When I use XpPutDocumentData I get a BadValue X protocol error. Any idea what am I doing wrong ? -
Q: +
Q: How do I use the XprintUtil library ?
Q: Why does the XGetImage not work for Xprt ? -
Q: +
Q: How to print with Xt/Athena widgets ? -
Q: +
Q: How to print with Xt/Motif widgets ? -
Q: +
Q: What are the differences between normal display and Xprint display ? -
Q: +
Q: How do I scale images ? -
Q: +
Q: libXp Image scaling vs. max. request size ? -
Q: +
Q: How can I use XprintUtils ? -
Q: +
Q: How do I calculate the DPI values for Xprt DDX screens ? -
Q: +
Q: How do I find scaleable fonts ? -
Q: +
Q: How do I find printer-builtin fonts ? -
Q: +
Q: The XLFD for Printer-builtin fonts look like bitmap fonts - is that bad ? -
Q: +
Q: When printing using the XawPrintShell/XmPrintShell print shells my PostScript output is always corrupt. What am I doing wrong ? -
Q: +
Q: When printing using the XawPrintShell/XmPrintShell print shells I always get a grey/dithered background on paper. Any idea how to change that to "white" ? -
Q: +
Q: Are there any caveats/suggestions when printing via Xt/Motif2 widgets ?
Q: Can I change the paper size/resolution/page orientation/etc. when printing using the @@ -810,9 +810,9 @@

Q: What is XpStartDoc for ? -
Q: +
Q: How does the XLFD for printer-builtin fonts look like ? / How can I find/identify printer-builtin fonts ? -
Q: +
Q: How can I scale images using the Xprint API ? -
Q: +
Q: Can I pass my own PostScript code (fragment) to the print spooler instead of letting Xprt's PostScript DDX generate it ? -
Q: +
Q: When I use XpPutDocumentData I get a BadValue X protocol error. Any idea what am I doing wrong ? -
Q: +
Q: How do I use the XprintUtil library ?
Q: Why does the XGetImage not work for Xprt ? -
Q: +
Q: How to print with Xt/Athena widgets ? -
Q: +
Q: How to print with Xt/Motif widgets ? -
Q: +
Q: What are the differences between normal display and Xprint display ? -
Q: +
Q: How do I scale images ? -
Q: +
Q: libXp Image scaling vs. max. request size ? -
Q: +
Q: How can I use XprintUtils ? -
Q: +
Q: How do I calculate the DPI values for Xprt DDX screens ? -
Q: +
Q: How do I find scaleable fonts ? -
Q: +
Q: How do I find printer-builtin fonts ? -
Q: +
Q: The XLFD for Printer-builtin fonts look like bitmap fonts - is that bad ? -
Q: +
Q: When printing using the XawPrintShell/XmPrintShell print shells my PostScript output is always corrupt. What am I doing wrong ? -
Q: +
Q: When printing using the XawPrintShell/XmPrintShell print shells I always get a grey/dithered background on paper. Any idea how to change that to "white" ? -
Q: +
Q: Are there any caveats/suggestions when printing via Xt/Motif2 widgets ?
Q: Can I change the paper size/resolution/page orientation/etc. when printing using the @@ -2875,7 +2875,7 @@ Because most applications of the day are only printing one document per job, XpStartPage was designed that it generates a "synthetic" XpStartDoc if it has not been called yet. -

Q:

+

Q:

How does the XLFD for printer-builtin fonts look like ? / How can I find/identify printer-builtin fonts ?

A:

There is no special XLFD scheme for printer-builtin fonts. @@ -2886,26 +2886,26 @@ thaht XListFonts and co. return both printer-builtin and normal fonts. Removing xp-list-internal-printer-fonts will make printer-builtin fonts disappear, removing xp-list-glyph-fonts will make normal glyph fonts disappear from font lists. -

Q:

+

Q:

How can I scale images using the Xprint API ?

A:

XXX -

Q:

+

Q:

Can I pass my own PostScript code (fragment) to the print spooler instead of letting Xprt's PostScript DDX generate it ?

A:

XXX -

Q:

+

Q:

When I use XpPutDocumentData I get a BadValue X protocol error. Any idea what am I doing wrong ?

A:

XXX -

Q:

+

Q:

How do I use the XprintUtil library ?

A:

XXX -

Q:

+

Q:

Why does the XGetImage not work for Xprt ?

A:

There are at least three reasons why XGetImage does not work for Xprt: @@ -2930,10 +2930,10 @@ (which means: A XGetImage implementation would return image data but glyphs rendered using the printer-builtin fonts would be missing).

-

Q:

+

Q:

How to print with Xt/Athena widgets ?

A:

- There are two examples in the Xprint.org and X11R6.7.1 source trees which demonstrate how to use Xprint using + There are two examples in the Xprint.org and X11R6.8.0 source trees which demonstrate how to use Xprint using Athena widgets:

  1. xc/programs/xphelloworld/xpawhelloworld/ contains a simple @@ -2945,40 +2945,40 @@ XmPrintShell should be used since this is the easier way to add print support to an Athena application).

-

Q:

+

Q:

How to print with Xt/Motif widgets ?

A:

The Xprint.org source tree contains the xpxmhelloworld (xc/programs/xphelloworld/xpxmhelloworld/) application to demonstrate how to print using the Motif2 toolkit. -

Q:

+

Q:

What are the differences between normal display and Xprint display ?

A:

XXX -

Q:

+

Q:

How do I scale images ?

A:

XXX -

Q:

+

Q:

libXp Image scaling vs. max. request size ?

A:

XXX -

Q:

+

Q:

How can I use XprintUtils ?

A:

XXX -

Q:

+

Q:

How do I calculate the DPI values for Xprt DDX screens ?

A:

XXX -

Q:

+

Q:

How do I find scaleable fonts ?

A:

XXX -

Q:

+

Q:

How do I find printer-builtin fonts ?

A:

XXX -

Q:

+

Q:

The XLFD for Printer-builtin fonts look like bitmap fonts - is that bad ?

A:

No, this is not "bad". The XLFD of a printer-builtin font only looks like a bitmap font since @@ -2986,7 +2986,7 @@ AFAIK specifies the resolution which was used for generating the metrics) - however this does not change the fact that the printer-builtin fonts are outline scaleable fonts these fonts reside in the printer's ROM). -

Q:

+

Q:

When printing using the XawPrintShell/XmPrintShell print shells my PostScript output is always corrupt. What am I doing wrong ?

A:

@@ -2999,13 +2999,13 @@ XtSetArg(args[n], XmNcursorPositionVisible, False); ...

-

Q:

+

Q:

When printing using the XawPrintShell/XmPrintShell print shells I always get a grey/dithered background on paper. Any idea how to change that to "white" ?

A:

XXX -

Q:

+

Q:

Are there any caveats/suggestions when printing via Xt/Motif2 widgets ?

A:

There are a couple of Xt resources which may likely differ from the normal values (e.g. those values @@ -3054,7 +3054,7 @@ a margin either.

-

Q:

+

Q:

Can I change the paper size/resolution/page orientation/etc. when printing using the XawPrintShell/XmPrintShell print shells ?

A:

@@ -3069,51 +3069,51 @@ XmNminX, XmNminY, XmNmaxX and XmNmaxX (XmPrintShell) are updated based on events send by the Xp Extension and then the print shell is resized based on the new values (XawPrintShell is slightly more flexible since the size mode can be defined using the XawNlayoutMode attribute)). -

Q:

+

Q:

Where can I find an example how to print with Xprint using the OpenGL/GLX API ?

A:

- In Xorg release 6.7.1 Xprint support was added to the GLX demo application "glxgears" + In Xorg release 6.8.0 Xprint support was added to the GLX demo application "glxgears" (xc/programs/Xserver/glxgears/). -

Known bugs

Problem +

Known bugs

Problem Xprt build from Xfree86 sources is completely broken and unuseable. -
Problem +
Problem The code which matches XLFD names to PS Type1 font names is case-sensitive in Xprts build from X.org X11R6.5.1/X11R6.6 and the current Solaris Xprt. This may cause that the PS DDX refuses to download PS Type1 fonts. -
Problem +
Problem Xprt build from X11R6.5.1/X11R6.6 sources and Solaris's version of Xprt can only download PFA (PS ASCII font) fonts which ends of the ending "*.pfa". -
Problem +
Problem There is an issue how the Linux and Solaris Xprt handles the "copy-count" of a print job. The result may be that a job with n copies of a document end-up in n jobs with n copies (usually equals to n^2 copies). -
Problem +
Problem Xprt build from Xfree86 sources is completely broken and unuseable. -
Problem +
Problem The code which matches XLFD names to PS Type1 font names is case-sensitive in Xprts build from X.org X11R6.5.1/X11R6.6 and the current Solaris Xprt. This may cause that the PS DDX refuses to download PS Type1 fonts. -
Problem +
Problem Xprt build from X11R6.5.1/X11R6.6 sources and Solaris's version of Xprt can only download PFA (PS ASCII font) fonts which ends of the ending "*.pfa". -
Problem +
Problem There is an issue how the Linux and Solaris Xprt handles the "copy-count" of a print job. The result may be that a job with n copies of a document end-up in n jobs with n copies (usually equals to n^2 copies). -
Problem

+

Problem

Xprt build from Xfree86 sources is completely broken and unuseable.

Solution

Build Xprt from the CVS tree at http://xprint.mozdev.org/ or the X.org X11R6.5.1 sources (note that the client side Xprint extension library ("libXp.so") from Xfree86 is not broken and do not need to be replaced). -

Problem

+

Problem

The code which matches XLFD names to PS Type1 font names is case-sensitive in Xprts build from X.org X11R6.5.1/X11R6.6 and the current Solaris Xprt. This may cause that the PS DDX refuses to @@ -3121,7 +3121,7 @@

Solution

Patch available, I am looking for a way to get the patch into the X11 and Solaris source trees... -

Problem

+

Problem

Xprt build from X11R6.5.1/X11R6.6 sources and Solaris's version of Xprt can only download PFA (PS ASCII font) fonts which ends of the ending "*.pfa". @@ -3131,7 +3131,7 @@ I am looking for a way to get the patch into the X11 and Solaris source trees (the fixed version can download both PFA/PFB fonts in PFA format and even handles non-standard file extensions). -

Problem

+

Problem

There is an issue how the Linux and Solaris Xprt handles the "copy-count" of a print job. The result may be that a job with n copies of a document end-up in n jobs with n copies (usually equals diff -N -x '*CVS*' -r -u x11r680/xc/doc/hardcopy/XPRINT/Xprint_FAQ.txt x11r682/xc/doc/hardcopy/XPRINT/Xprint_FAQ.txt --- xc/doc/hardcopy/XPRINT/Xprint_FAQ.txt 2004-08-11 19:51:24.000000000 +0200 +++ xc/doc/hardcopy/XPRINT/Xprint_FAQ.txt 2004-12-15 08:17:48.000000000 +0100 @@ -8,7 +8,7 @@ Version: 0.9.1 - Last-Modified: 2004/06/14 08:15:16 + Last-Modified: 2004/10/08 01:05:21 Maintained-by: Roland Mainz <[1]roland.mainz@nrubsig.org> @@ -778,12 +778,12 @@ * Motif/LessTif toolkits (full framework incl. special widgets like XmPrintShell) * Athena toolkit (full framework incl. special widgets like - XawPrintShell, starting with X.org release 6.7.1) - * Xedit, Xman, Xmore, etc. (starting with X.org release 6.7.1) + XawPrintShell, starting with X.org release 6.8.0) + * Xedit, Xman, Xmore, etc. (starting with X.org release 6.8.0) * [173]Common Desktop Environment (CDE) 2.x * [174]Mozilla, FireFox, ThunderBird, etc. * Eclipse - * KDE/Qt support is planned for Q3/2004 + * KDE/Qt support is planned for Q1/2005 * StarOffice 5.x * etc. @@ -2813,7 +2813,7 @@ How to print with Xt/Athena widgets ? A: - There are two examples in the Xprint.org and X11R6.7.1 source trees + There are two examples in the Xprint.org and X11R6.8.0 source trees which demonstrate how to use Xprint using Athena widgets: 1. xc/programs/xphelloworld/xpawhelloworld/ contains a simple demo application which prints a Athena widget using the XawPrintShell @@ -2998,7 +2998,7 @@ OpenGL/GLX API ? A: - In Xorg release 6.7.1 Xprint support was added to the GLX demo + In Xorg release 6.8.0 Xprint support was added to the GLX demo application "glxgears" ([324]xc/programs/Xserver/glxgears/). Known bugs diff -N -x '*CVS*' -r -u x11r680/xc/doc/hardcopy/XPRINT/Xprint_FAQ.xml x11r682/xc/doc/hardcopy/XPRINT/Xprint_FAQ.xml --- xc/doc/hardcopy/XPRINT/Xprint_FAQ.xml 2004-08-11 19:51:24.000000000 +0200 +++ xc/doc/hardcopy/XPRINT/Xprint_FAQ.xml 2004-12-15 08:17:48.000000000 +0100 @@ -44,7 +44,7 @@ Version: 0.9.1 - Last-Modified: 2004/06/14 08:15:16 + Last-Modified: 2004/10/08 01:05:21 Maintained-by: @@ -756,7 +756,7 @@ You can setup a TTF-aware X font server ("xfs", see - xfs__mansuffix__) + xfs__appmansuffix__) with the matching TrueType fonts and add the font server location to Xprt's font path. @@ -901,12 +901,12 @@ - Athena toolkit (full framework incl. special widgets like XawPrintShell, starting with X.org release 6.7.1) + Athena toolkit (full framework incl. special widgets like XawPrintShell, starting with X.org release 6.8.0) - Xedit, Xman, Xmore, etc. (starting with X.org release 6.7.1) + Xedit, Xman, Xmore, etc. (starting with X.org release 6.8.0) @@ -926,7 +926,7 @@ - KDE/Qt support is planned for Q3/2004 + KDE/Qt support is planned for Q1/2005 @@ -1381,14 +1381,14 @@ can be handled in various ways - like per-cookie (using MIT-MAGIC-COOKIE-1 authentification), per-user (using SUN-DES-1 or MIT-KERBEROS-5 auth., see - (see xhost__mansuffix__)) - and/or per-machine (using "xhost" (see xhost__mansuffix__) and/or + (see xhost__appmansuffix__)) + and/or per-machine (using "xhost" (see xhost__appmansuffix__) and/or /etc/X<dpy>.hosts (<dpy> == display number, - e.g. /etc/X0.hosts for display 0) (see Xserver__mansuffix__)) + e.g. /etc/X0.hosts for display 0) (see Xserver__appmansuffix__)) Consult manual pages Xsecurity__miscmansuffix__, - xhost__mansuffix__, - Xserver__mansuffix__ + xhost__appmansuffix__, + Xserver__appmansuffix__ etc. for further details. @@ -1403,7 +1403,7 @@ Logging access to Xprt can be done using the standard Xserver auditing, - see the Xserver__mansuffix__ + see the Xserver__appmansuffix__ manual page, option "-audit" @@ -1447,7 +1447,7 @@ See - xplsprinters__mansuffix__ + xplsprinters__appmansuffix__ for futher usage and a description of the output. @@ -2972,7 +2972,7 @@ If you do not want to use access control for Xprt then you can start it - with the option "-ac" (see Xserver__mansuffix__) + with the option "-ac" (see Xserver__appmansuffix__) to disable the access control. Example: @@ -3002,7 +3002,7 @@ Host-based access control can be archived using /etc/X<dpy>.hosts (<dpy> == display number, e.g. /etc/X0.hosts for display 0 (see - Xserver__mansuffix__ + Xserver__appmansuffix__ manual page for further details)).

Example @@ -3150,7 +3150,7 @@ Xserver must run set-gid "root" to access these directories). Either fix the permission or start Xprt with the option "-pn". Using this option requires to access the server always with - <hostname>:<displaynum> (see Xserver__mansuffix__ + <hostname>:<displaynum> (see Xserver__appmansuffix__ manual page for the side-effects of this option). @@ -4316,7 +4316,7 @@ - There are two examples in the Xprint.org and X11R6.7.1 source trees which demonstrate how to use Xprint using + There are two examples in the Xprint.org and X11R6.8.0 source trees which demonstrate how to use Xprint using Athena widgets: @@ -4662,7 +4662,7 @@ - In Xorg release 6.7.1 Xprint support was added to the GLX demo application "glxgears" + In Xorg release 6.8.0 Xprint support was added to the GLX demo application "glxgears" (xc/programs/Xserver/glxgears/). diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/X11/XGetWProp.man x11r682/xc/doc/man/X11/XGetWProp.man --- xc/doc/man/X11/XGetWProp.man 2004-04-23 20:42:09.000000000 +0200 +++ xc/doc/man/X11/XGetWProp.man 2004-12-15 08:22:55.000000000 +0100 @@ -153,6 +153,7 @@ .HP Atom *XListProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int *\fInum_prop_return\fP\^); +.HP int XChangeProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom \fIproperty\fP\^, Atom \fItype\fP\^, int \fIformat\fP\^, int \fImode\fP\^, unsigned char *\fIdata\fP\^, int \fInelements\fP\^); diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/Xt/XtNextEv.man x11r682/xc/doc/man/Xt/XtNextEv.man --- xc/doc/man/Xt/XtNextEv.man 2004-04-23 20:42:13.000000000 +0200 +++ xc/doc/man/Xt/XtNextEv.man 2005-01-13 00:37:05.000000000 +0100 @@ -137,7 +137,7 @@ Boolean XtPeekEvent(XEvent *\fIevent_return\fP); .HP Boolean XtPending(void); -.Hp +.HP void XtProcessEvent(XtInputMask \fImask\fP); .HP void XtMainLoop(void); diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/general/Imakefile x11r682/xc/doc/man/general/Imakefile --- xc/doc/man/general/Imakefile 2004-04-23 20:42:14.000000000 +0200 +++ xc/doc/man/general/Imakefile 2004-12-15 08:38:28.000000000 +0100 @@ -8,8 +8,16 @@ MANSUFFIX = $(MISCMANSUFFIX) InstallManPage(X,$(MANDIR)) +InstallManPage(Xprint,$(MANDIR)) InstallManPageLong(Consortium,$(MANDIR),XConsortium) InstallManPageLong(Standards,$(MANDIR),XStandards) InstallManPageLong(XProjectTeam,$(MANDIR),XProjectTeam) InstallManPageAliases(XProjectTeam,$(MANDIR),X.Org) InstallManPageLong(security,$(MANDIR),Xsecurity) + +#ifdef HasDocBookTools +all:: Xprint.man Xprint.html + +ConvertDocBookToManPage(Xprint.sgml, Xprint.man) +ConvertDocBookToHTML(Xprint.sgml, Xprint.html) +#endif /* HasDocBookTools */ diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/general/Xprint.html x11r682/xc/doc/man/general/Xprint.html --- xc/doc/man/general/Xprint.html 1970-01-01 01:00:00.000000000 +0100 +++ xc/doc/man/general/Xprint.html 2004-12-15 08:38:28.000000000 +0100 @@ -0,0 +1,296 @@ +Xprint

Name

Xprint — The "X print service" - a portable, network-transparent printing system based on the X11 protocol

Synopsis

Xprint is a very flexible, extensible, scaleable, client/server + print system based on ISO 10175 (and some other specs) and the X11 + rendering protocol. + Using Xprint an application can search, query and use devices like + printers, FAX machines or create documents in formats like PDF. + In particular, an application can seek a printer, query supported + attributes (like paper size, trays, fonts etc.), configure the printer + device to match it’s needs and print on it like on any other X device + reusing parts of the code which is used for the video card Xserver. +

OVERVIEW

+ The "X Print Service" technology allows X rendering to devices such as + printers and fax. Most of the service is available in the X11 + technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). + Modifications have also been made to the LessTif/Motif/Qt technology + stacks to support Xprint. +

+ The Xp portion consists of: +

  • Xp Extension for the X-Server (included in the X-Server Xprt)

  • Xp Extension API for the client side (libXp/libXprintUtils)

  • PCL ddx driver that converts core X to native PCL

  • PDF ddx driver that converts core X to native PDF

  • PostScript ddx driver that converts core X to native PostScript

  • Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters

+ From an X clients perspective, it can attach to one of two nearly + identical X-Servers, a "Video" X-Server, and a "Print" X-Server + which has the additional Xp capability but otherwise looks and + behaves the same. +

HOW THE X PRINT SERVICE WORKS

+ The X Print Service expands on the traditional X-Server and Xlib world + in four ways. + +

  1. + Most obvious is the use of "print ddx drivers" instead of + "video ddx drivers". While a video ddx driver modifies pixels + in a video frame buffer, a print ddx driver generates "page + description language (PDL)" output (such as PCL, PDF or PostScript) + or sends the print rendering instructions to a platform-specific + print API (like Win32/GDI). +

    + Once a print ddx driver generates PDL output, it can be sent to + a spooler such as lp(1) + or retrieved by the client (to implement functionality like "print-to-file"). +

    + Though not currently done, a single X-Server can support both + print and video ddx drivers. +

  2. + Since printers support "paged" output, unlike video, a portion + of the Xp Extension supports APIs to delineate printed output. + For example, XpStartPage and XpEndPage tell the X-Server where + a physical page starts and ends in an otherwise continuous + stream of X rendering primitives. Likewise, XpStartJob and + XpEndJob determine when a collection of pages starts and ends. + XpEndJob typically causes the generated PDL to be submitted to + a spooler, such as lp(1). +

  3. + Since printers have extensive capabilities, another portion of + the Xp Extension supports APIs to manipulate "print contexts". +

    + Once a printer is selected using the Xp Extension API, a print + context to represent it can be created. A print context + embodies the printer selected - it contains the printer's + default capabilities, selectable range of capabilities, + printer state, and generated output. Some "attributes" within + the print context can be modified by the user, and the + X-Server and print ddx driver will react accordingly. For + example, the attribute "content-orientation" can be set to + "landscape" or "portrait" (if the printer supports these + values - which can be queried using the Xprint API as well). +

  4. + Since printers can have "built in" fonts, the Xp Extension in + the X-Server works with the print ddx drivers to make + available (for printing only) additional fonts on a per print + context basis. +

    + When a print context is created and set for a given printer, + the X font calls may be able to access additional printer + fonts. To do this (typically), the X-Server must have access + to "printer metric files" (.pmf) that describe at minimum the + metrics of the built in fonts. +

USAGE

+ There are three tasks to start the X Print Service: +

  1. configuring the X Print Server,

  2. starting the X Print Service

  3. configuring the user session so that clients can find the running X Print Service

+ The tasks are described in detail below. +

SERVER CONFIGURATION

+ The X Print Server (Xprt) can read a number of configuration files which + control its behavior and support for printers. Each vendor platform has + a default location for this information. Xprt can also read the + environment variable XPCONFIGDIR to locate alternate configuration + directories. Common settings include: + +

export XPCONFIGDIR=/X11/lib/X11/XpConfig/
export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/

+ Xprt has many built-in defaults, and lacking any configuration files, + will immediately try to support all printers visible via lpstat(1). +

+ In order of importance for configuration by a system administrator, the + configuration files for a "C" locale are as follows (see Xprt(7) for more + details (including support for non-"C" locales)): +

${XPCONFIGDIR}/C/print/Xprinters

+ 'Xprinters' is the top most configuration file. It tells + Xprt which specific printer names (e.g. mylaser) should + be supported, and whether lpstat(1) or other commands + should be used to automatically supplement the list of + printers. +

${XPCONFIGDIR}/C/print/attributes/printer

+ The 'printer' file maps printer names to model + configurations (see 'model-config' below). For example, + "mylaser" could be mapped to a "HPDJ1600C", and all other + arbitrary printers could be mapped to a default, such as + "HPLJ4SI". When depending on lpstat(1) in the Xprinters + file, setting up defaults in 'printer' becomes all the + more important. +

${XPCONFIGDIR}/C/print/attributes/document

+ The 'document' file specifies the initial document values + for any print jobs. For example, which paper tray to + use, what default resolution, etc. +

${XPCONFIGDIR}/C/print/attributes/job

+ The 'job' file specifies the initial job values for any + print jobs. For example, "notification-profile" can be + set so that when a print job is successfully sent to a + printer, e-mail is sent to the user. +

${XPCONFIGDIR}/C/print/models/PSdefault/model-config, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf

+ The 'model-config' file has attributes that describe the + printer model’s capabilities and default settings. + Printer model fonts may also be present. The model-config + file also identifies the print ddx driver to be used. + + For each printer model supported, a complete hierarchy of + files should exist. In most cases, these files do not + need to be modified. +

${XPCONFIGDIR}/C/print/ddx-config/raster/pcl, ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf, ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript

+ The print ddx drivers can have highly specific + configuration files to control their behavior. In most + cases, these files do not need to be modified. +

+ + More information in how to configure and customize the X print server can be found in the + Xprt(7) + manual page. +

STARTING UP

+ The summary checklist for starting the X Print Service is as follows: + +

  1. + Choose an execution model for the X Print Service. The X + Print Service can be run on a per-user session basis, per + machine basis, or can be run on a few machines globally + available to a number of users. +

  2. + If print jobs are to be submitted to a spooler (almost always + the case), make sure all needed printers are available to the + spooler subsystem (most often lp(1)) + on the same machine running the X Print Service. +

  3. + Configure the X Print Server. See ``X Print Server + Configuration''. +

  4. + Depending on #1, start the X Print Server process "Xprt", and + then the toolkit-specific Print Dialog Manager Daemon process + (such as CDEnext's "dtpdmd") at the appropriate times. + Note that libXprintUtils-based applications/toolkits do not need + a Print Dialog Manager Daemon process to use Xprint. +

+ The details are described below. +

+ Because the X Print Service is based on X, it can be easily distributed. + The most significant factors in which execution model to choose will be + driven by: +

  • + how many printers will be accessable through the printer + subsystem on any given machine. A system administrator may + choose to cluster printers on a few given machines, or + scatter them across an organization and possibly make + extensive use of remote spoolers to make them globally + available. +

  • + how many machines will need a copy of the X Print Server + configuration files. The files have been architected so + that one super-set version of them can be maintained and + distributed (e.g. via NFS), and a per-machine or per-user + version of the `Xprinters' is all that is needed to have the + appropriate information in them utilized or ignored. +

  • + how many users can demand services from a given X Print + Service. +

+ + With the above in mind, some obvious execution models include: +

  • + Global - in this model, the system administrator is choosing + to run the X Print Service on a *few* select machines with + appropriate printers configured, and allow clients access to + the global resource. This can centralize the administration + of printers and configuration files, but may have to be + monitored for performance loading. +

    + Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). +

  • + Per-machine - every machine with potential X Print Service + users would run the service. Printer and configuration file + administration is decentralized, and usage would be limited + to the users on the machine. +

    + Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). +

  • + Per-user session - every user would run an entire X Print + Service for themselves. In the future, the Video X Server + normally started may contain Print X Server capability, so + this model becomes very natural. +

    + Startup would likely be done at session login or by + launching actions or processes manually once the user + logs in. Note: Deamons like "dtpdmd" must be started after Xprt. +

+ Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): +

  1. [machineA] % Xprt [-XpFile Xprinters file] [:dispNum] 

    + Note that Xprt will look for configuration files in either + a default location or where XPCONFIGDIR points. +

    -XpFile specifies an alternate `Xprinters' file, rather + than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. +

  2. [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] 

    + The dtpdmd will maintain an X-Selection on the X-Server, + and will start dtpdm's as required to service requests. +

+ In all but the per-user session model, the machine running the dtpdmd + (thus dtpdm's) will need display authorization to the users video + display. +

CLIENT CONFIGURATION

+ Once a X Print Server and dtpdmd have been started -- many of them + in some cases -- clients will need to find and use them. There are + two mechanisms that allow clients to discover X Print Servers and + printers. + +

  • + "X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print + applications, the following notation is understood: +

    printer_name@machine[:dispNum]

    + For example: +

    colorlj7@printhub:2

    + In the above example, the X Print Server running at `printhub:2' + is assumed to support the printer named `colorlj7'. +

  • ${XPSERVERLIST} - assuming usage of the DtPrint print dialogs, + the environment variable ${XPSERVERLIST} can contain a list + of X Print Servers. For example: +

    XPSERVERLIST="printhub:2 printhub:3 otherdept:0"

    + Then in the dialogs, only a printer name needs to be entered. + The dialog will then search the X Print Servers in ${XPSERVERLIST} + for a server than supports the printer, and then establish + contact. +

END-USER SEQUENCE

+ From most CDEnext applications, printing is accomplished by bringing + down the File menu and selecting Print.... This will result in + the DtPrintSetupBox dialog, which will request the name of a printer, + and offer limited capability to configure print options (e.g. number + of copies). If the user wishes, they can select Setup..., which + will start a dtpdm capable of modifying additional print options. + Finally, the user should select Print. +

ENVIRONMENT

${XPCONFIGDIR}

This environment variable points to the root + of the Xprint server configuration directory hierarchy. + If the variable is not defined, the default + path is be assumed. The default path may be + /usr/X11R6/lib/X11/xserver/, + /usr/lib/X11/xserver/, + /usr/share/Xprint/xserver/ or + /usr/openwin/server/etc/XpConfig, depending on the + system, and may be configured in /etc/init.d/xprint.

${LANG}

+ This environment variable selects the locale settings used by the Xprint server. + Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) + which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). + If ${LANG} is not set "C" is assumed. +

${XPSERVERLIST}

The environment variable ${XPSERVERLIST} contains a list + of display identifiers (separated by whitespace) which tell an + application where it can find the Xprint servers. Usually + ${XPSERVERLIST} is set by the profile startup scripts (e.g. + /etc/profile or /etc/profile.d/xprint.sh) using the output of + /etc/init.d/xprint get_xpserverlist.

Example: +

+		export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`"

Alternatively ${XPSERVERLIST} can be set + manually. Example:

+		export XPSERVERLIST="littlecat:80 bitdog:72"

+ instructs an application to find an Xprint server at display + 80 on the machine "littlecat" and at display 72 on the + machine bigdog. +

${XPRINTER}

The environment variable ${XPRINTER} + defines the default printer used by print + applications. The syntax is either + printername or + printername@display.

Examples: +

XPRINTER=ps003

+ tells an application to look for the + first printer named "ps003" on all Xprint + servers.

XPRINTER=hplaser19@littlecat:80

+ tells an application to use the printer "hplaser19" + on the Xprint server at display + "littlecat:80".

If ${XPRINTER} is not set the applications + will examine the values of the ${PDPRINTER}, + ${LPDEST}, and + ${PRINTER} environment variables (in that order). +

SEE ALSO

X11(7), xplsprinters(7), xprehashprinterlist(7), xphelloworld(7), xpxmhelloworld(7), xpawhelloworld(7), xpxthelloworld(7), xpsimplehelloworld(7), Xserver(7), Xprt(7), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

AUTHORS

+ This manual page was written by + Roland Mainz based on the original X11R6.6 + xc/programs/Xserver/XpConfig/README. +

diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/general/Xprint.man x11r682/xc/doc/man/general/Xprint.man --- xc/doc/man/general/Xprint.man 1970-01-01 01:00:00.000000000 +0100 +++ xc/doc/man/general/Xprint.man 2004-12-15 08:38:28.000000000 +0100 @@ -0,0 +1,421 @@ +.\" -*- coding: us-ascii -*- +.TH Xprint __miscmansuffix__ "8 October 2004" +.SH NAME +Xprint \- The "X print service" - a portable, network-transparent printing system based on the X11 protocol +.SH SYNOPSIS +Xprint is a very flexible, extensible, scaleable, client/server +print system based on ISO 10175 (and some other specs) and the X11 +rendering protocol. +Using Xprint an application can search, query and use devices like +printers, FAX machines or create documents in formats like PDF. +In particular, an application can seek a printer, query supported +attributes (like paper size, trays, fonts etc.), configure the printer +device to match it\(cqs needs and print on it like on any other X device +reusing parts of the code which is used for the video card Xserver. +.SH OVERVIEW +The "X Print Service" technology allows X rendering to devices such as +printers and fax. Most of the service is available in the X11 +technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). +Modifications have also been made to the LessTif/Motif/Qt technology +stacks to support Xprint. +.PP +The Xp portion consists of: +.TP 0.2i +\(bu +Xp Extension for the X-Server (included in the X-Server Xprt) +.TP 0.2i +\(bu +Xp Extension API for the client side (libXp/libXprintUtils) +.TP 0.2i +\(bu +PCL ddx driver that converts core X to native PCL +.TP 0.2i +\(bu +PDF ddx driver that converts core X to native PDF +.TP 0.2i +\(bu +PostScript ddx driver that converts core X to native PostScript +.TP 0.2i +\(bu +Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters +.PP +.PP +From an X clients perspective, it can attach to one of two nearly +identical X-Servers, a "Video" X-Server, and a "Print" X-Server +which has the additional Xp capability but otherwise looks and +behaves the same. +.SH "HOW THE X PRINT SERVICE WORKS" +The X Print Service expands on the traditional X-Server and Xlib world +in four ways. +.TP 0.4i +1. +Most obvious is the use of "print ddx drivers" instead of +"video ddx drivers". While a video ddx driver modifies pixels +in a video frame buffer, a print ddx driver generates "page +description language (PDL)" output (such as PCL, PDF or PostScript) +or sends the print rendering instructions to a platform-specific +print API (like Win32/GDI). + +Once a print ddx driver generates PDL output, it can be sent to +a spooler such as \fBlp\fR(1) +or retrieved by the client (to implement functionality like "print-to-file"). + +Though not currently done, a single X-Server can support both +print and video ddx drivers. +.TP 0.4i +2. +Since printers support "paged" output, unlike video, a portion +of the Xp Extension supports APIs to delineate printed output. +For example, XpStartPage and XpEndPage tell the X-Server where +a physical page starts and ends in an otherwise continuous +stream of X rendering primitives. Likewise, XpStartJob and +XpEndJob determine when a collection of pages starts and ends. +XpEndJob typically causes the generated PDL to be submitted to +a spooler, such as \fBlp\fR(1). +.TP 0.4i +3. +Since printers have extensive capabilities, another portion of +the Xp Extension supports APIs to manipulate "print contexts". + +Once a printer is selected using the Xp Extension API, a print +context to represent it can be created. A print context +embodies the printer selected - it contains the printer's +default capabilities, selectable range of capabilities, +printer state, and generated output. Some "attributes" within +the print context can be modified by the user, and the +X-Server and print ddx driver will react accordingly. For +example, the attribute "content-orientation" can be set to +"landscape" or "portrait" (if the printer supports these +values - which can be queried using the Xprint API as well). +.TP 0.4i +4. +Since printers can have "built in" fonts, the Xp Extension in +the X-Server works with the print ddx drivers to make +available (for printing only) additional fonts on a per print +context basis. + +When a print context is created and set for a given printer, +the X font calls may be able to access additional printer +fonts. To do this (typically), the X-Server must have access +to "printer metric files" (.pmf) that describe at minimum the +metrics of the built in fonts. +.PP +.SH USAGE +There are three tasks to start the X Print Service: +.TP 0.4i +1. +configuring the X Print Server, +.TP 0.4i +2. +starting the X Print Service +.TP 0.4i +3. +configuring the user session so that clients can find the running X Print Service +.PP +.PP +The tasks are described in detail below. +.SH "SERVER CONFIGURATION" +The X Print Server (Xprt) can read a number of configuration files which +control its behavior and support for printers. Each vendor platform has +a default location for this information. Xprt can also read the +environment variable \fBXPCONFIGDIR\fR to locate alternate configuration +directories. Common settings include: + +export XPCONFIGDIR=/X11/lib/X11/XpConfig/ +.PP +export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/ + +.PP +Xprt has many built-in defaults, and lacking any configuration files, +will immediately try to support all printers visible via \fBlpstat\fR(1). +.PP +In order of importance for configuration by a system administrator, the +configuration files for a "C" locale are as follows (see \fBXprt\fR(__appmansuffix__) for more +details (including support for non-"C" locales)): +.TP +\fB${XPCONFIGDIR}/C/print/Xprinters\fR +\&'Xprinters' is the top most configuration file. It tells +Xprt which specific printer names (e.g. mylaser) should +be supported, and whether \fBlpstat\fR(1) or other commands +should be used to automatically supplement the list of +printers. +.TP +\fB${XPCONFIGDIR}/C/print/attributes/printer\fR +The 'printer' file maps printer names to model +configurations (see 'model-config' below). For example, +"mylaser" could be mapped to a "HPDJ1600C", and all other +arbitrary printers could be mapped to a default, such as +"HPLJ4SI". When depending on \fBlpstat\fR(1) in the Xprinters +file, setting up defaults in 'printer' becomes all the +more important. +.TP +\fB${XPCONFIGDIR}/C/print/attributes/document\fR +The 'document' file specifies the initial document values +for any print jobs. For example, which paper tray to +use, what default resolution, etc. +.TP +\fB${XPCONFIGDIR}/C/print/attributes/job\fR +The 'job' file specifies the initial job values for any +print jobs. For example, "notification-profile" can be +set so that when a print job is successfully sent to a +printer, e-mail is sent to the user. +.TP +\fB${XPCONFIGDIR}/C/print/models/PSdefault/model\-config\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf\fR +The 'model-config' file has attributes that describe the +printer model\(cqs capabilities and default settings. +Printer model fonts may also be present. The model-config +file also identifies the print ddx driver to be used. +For each printer model supported, a complete hierarchy of +files should exist. In most cases, these files do not +need to be modified. +.TP +\fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pcl\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pdf\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/postscript\fR +The print ddx drivers can have highly specific +configuration files to control their behavior. In most +cases, these files do not need to be modified. +.PP +More information in how to configure and customize the X print server can be found in the +\fBXprt\fR(__appmansuffix__) +manual page. +.SH "STARTING UP" +The summary checklist for starting the X Print Service is as follows: +.TP 0.4i +1. +Choose an execution model for the X Print Service. The X +Print Service can be run on a per-user session basis, per +machine basis, or can be run on a few machines globally +available to a number of users. +.TP 0.4i +2. +If print jobs are to be submitted to a spooler (almost always +the case), make sure all needed printers are available to the +spooler subsystem (most often \fBlp\fR(1)) +on the same machine running the X Print Service. +.TP 0.4i +3. +Configure the X Print Server. See ``X Print Server +Configuration''. +.TP 0.4i +4. +Depending on #1, start the X Print Server process "Xprt", and +then the toolkit-specific Print Dialog Manager Daemon process +(such as CDEnext's "dtpdmd") at the appropriate times. +Note that libXprintUtils-based applications/toolkits do not need +a Print Dialog Manager Daemon process to use Xprint. +.PP +The details are described below. +.PP +Because the X Print Service is based on X, it can be easily distributed. +The most significant factors in which execution model to choose will be +driven by: +.TP 0.2i +\(bu +how many printers will be accessable through the printer +subsystem on any given machine. A system administrator may +choose to cluster printers on a few given machines, or +scatter them across an organization and possibly make +extensive use of remote spoolers to make them globally +available. +.TP 0.2i +\(bu +how many machines will need a copy of the X Print Server +configuration files. The files have been architected so +that one super-set version of them can be maintained and +distributed (e.g. via NFS), and a per-machine or per-user +version of the `Xprinters' is all that is needed to have the +appropriate information in them utilized or ignored. +.TP 0.2i +\(bu +how many users can demand services from a given X Print +Service. +.PP +With the above in mind, some obvious execution models include: +.TP 0.2i +\(bu +Global - in this model, the system administrator is choosing +to run the X Print Service on a *few* select machines with +appropriate printers configured, and allow clients access to +the global resource. This can centralize the administration +of printers and configuration files, but may have to be +monitored for performance loading. + +Startup would likely be done by boot-up scripts (such as \fB/etc/init.d/xprint\fR). +.TP 0.2i +\(bu +Per-machine - every machine with potential X Print Service +users would run the service. Printer and configuration file +administration is decentralized, and usage would be limited +to the users on the machine. + +Startup would likely be done by boot-up scripts (such as \fB/etc/init.d/xprint\fR). +.TP 0.2i +\(bu +Per-user session - every user would run an entire X Print +Service for themselves. In the future, the Video X Server +normally started may contain Print X Server capability, so +this model becomes very natural. + +Startup would likely be done at session login or by +launching actions or processes manually once the user +logs in. Note: Deamons like "dtpdmd" must be started after Xprt. +.PP +.PP +Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): +.TP 0.4i +1. + +.nf +[machineA] % Xprt [\-XpFile ] [:dispNum] & +.fi + + +Note that Xprt will look for configuration files in either +a default location or where \fBXPCONFIGDIR\fR points. + +\fB\-XpFile\fR specifies an alternate `Xprinters' file, rather +than the default one or `\fB${XPCONFIGDIR}/C/print/Xprinters\fR'. +.TP 0.4i +2. + +.nf +[machineA] % dtpdmd \-d machineA[:dispNum] [\-l /tmp/dtpdmd.log] & +.fi + + +The dtpdmd will maintain an X-Selection on the X-Server, +and will start dtpdm's as required to service requests. +.PP +.PP +In all but the per-user session model, the machine running the dtpdmd +(thus dtpdm's) will need display authorization to the users video +display. +.SH "CLIENT CONFIGURATION" +Once a X Print Server and dtpdmd have been started -- many of them +in some cases -- clients will need to find and use them. There are +two mechanisms that allow clients to discover X Print Servers and +printers. +.TP 0.2i +\(bu +"X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print +applications, the following notation is understood: + + +.nf +printer_name@machine[:dispNum] +.fi + + +For example: + + +.nf +colorlj7@printhub:2 +.fi + + +In the above example, the X Print Server running at `printhub:2' +is assumed to support the printer named `colorlj7'. +.TP 0.2i +\(bu +\fB${XPSERVERLIST}\fR - assuming usage of the DtPrint print dialogs, +the environment variable \fB${XPSERVERLIST}\fR can contain a list +of X Print Servers. For example: + + +.nf +XPSERVERLIST="printhub:2 printhub:3 otherdept:0" +.fi + + +Then in the dialogs, only a printer name needs to be entered. +The dialog will then search the X Print Servers in \fB${XPSERVERLIST}\fR +for a server than supports the printer, and then establish +contact. +.PP +.SH "END-USER SEQUENCE" +From most CDEnext applications, printing is accomplished by bringing +down the menu and selecting . This will result in +the DtPrintSetupBox dialog, which will request the name of a printer, +and offer limited capability to configure print options (e.g. number +of copies). If the user wishes, they can select , which +will start a dtpdm capable of modifying additional print options. +Finally, the user should select . +.SH ENVIRONMENT +.TP +\fB${XPCONFIGDIR}\fR +This environment variable points to the root +of the Xprint server configuration directory hierarchy. +If the variable is not defined, the default +path is be assumed. The default path may be +\fB/usr/X11R6/lib/X11/xserver/\fR, +\fB/usr/lib/X11/xserver/\fR, +\fB/usr/share/Xprint/xserver/\fR or +\fB/usr/openwin/server/etc/XpConfig\fR, depending on the +system, and may be configured in \fB/etc/init.d/xprint\fR. +.TP +\fB${LANG}\fR +This environment variable selects the locale settings used by the Xprint server. +Xprt allows language-specific settings (stored in \fB${XPCONFIGDIR}/${LANG}/print/\fR) +which will override the default settings (stored in \fB${XPCONFIGDIR}/C/print/\fR). +If \fB${LANG}\fR is not set "C" is assumed. +.TP +\fB${XPSERVERLIST}\fR +The environment variable \fB${XPSERVERLIST}\fR contains a list +of display identifiers (separated by whitespace) which tell an +application where it can find the Xprint servers. Usually +\fB${XPSERVERLIST}\fR is set by the profile startup scripts (e.g. +\fB/etc/profile\fR or \fB/etc/profile.d/xprint.sh\fR) using the output of +\fB/etc/init.d/xprint get_xpserverlist\fR. + +Example: + +.nf + + export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`" +.fi + + +Alternatively \fB${XPSERVERLIST}\fR can be set +manually. Example: + +.nf + + export XPSERVERLIST="littlecat:80 bitdog:72" +.fi + +instructs an application to find an Xprint server at display +80 on the machine "littlecat" and at display 72 on the +machine bigdog. +.TP +\fB${XPRINTER}\fR +The environment variable \fB${XPRINTER}\fR +defines the default printer used by print +applications. The syntax is either +\fIprintername\fR or +\fIprintername\fR@\fIdisplay\fR. + +Examples: +.RS +.TP +\fBXPRINTER=ps003\fR +tells an application to look for the +first printer named "ps003" on all Xprint +servers. +.TP +\fBXPRINTER=hplaser19@littlecat:80\fR +tells an application to use the printer "hplaser19" +on the Xprint server at display +"littlecat:80". +.RE + + +If \fB${XPRINTER}\fR is not set the applications +will examine the values of the \fB${PDPRINTER}\fR, +\fB${LPDEST}\fR, and +\fB${PRINTER}\fR environment variables (in that order). +.SH "SEE ALSO" +\fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxprehashprinterlist\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) +.SH AUTHORS +This manual page was written by +Roland Mainz based on the original X11R6.6 +\fBxc/programs/Xserver/XpConfig/README\fR. diff -N -x '*CVS*' -r -u x11r680/xc/doc/man/general/Xprint.sgml x11r682/xc/doc/man/general/Xprint.sgml --- xc/doc/man/general/Xprint.sgml 1970-01-01 01:00:00.000000000 +0100 +++ xc/doc/man/general/Xprint.sgml 2004-12-15 08:38:28.000000000 +0100 @@ -0,0 +1,627 @@ + + + + + + + Xprint + __miscmansuffix__ + + + Xprint + + The "X print service" - a portable, network-transparent printing system based on the X11 protocol + + + Xprint is a very flexible, extensible, scaleable, client/server + print system based on ISO 10175 (and some other specs) and the X11 + rendering protocol. + Using Xprint an application can search, query and use devices like + printers, FAX machines or create documents in formats like PDF. + In particular, an application can seek a printer, query supported + attributes (like paper size, trays, fonts etc.), configure the printer + device to match it’s needs and print on it like on any other X device + reusing parts of the code which is used for the video card Xserver. + + + + + OVERVIEW + + The "X Print Service" technology allows X rendering to devices such as + printers and fax. Most of the service is available in the X11 + technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). + Modifications have also been made to the LessTif/Motif/Qt technology + stacks to support Xprint. + + + The Xp portion consists of: + + Xp Extension for the X-Server (included in the X-Server Xprt) + Xp Extension API for the client side (libXp/libXprintUtils) + PCL ddx driver that converts core X to native PCL + PDF ddx driver that converts core X to native PDF + PostScript ddx driver that converts core X to native PostScript + Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters + + + + From an X clients perspective, it can attach to one of two nearly + identical X-Servers, a "Video" X-Server, and a "Print" X-Server + which has the additional Xp capability but otherwise looks and + behaves the same. + + + + + HOW THE X PRINT SERVICE WORKS + + The X Print Service expands on the traditional X-Server and Xlib world + in four ways. + + + + + Most obvious is the use of "print ddx drivers" instead of + "video ddx drivers". While a video ddx driver modifies pixels + in a video frame buffer, a print ddx driver generates "page + description language (PDL)" output (such as PCL, PDF or PostScript) + or sends the print rendering instructions to a platform-specific + print API (like Win32/GDI). + + + Once a print ddx driver generates PDL output, it can be sent to + a spooler such as lp1 + or retrieved by the client (to implement functionality like "print-to-file"). + + + Though not currently done, a single X-Server can support both + print and video ddx drivers. + + + + + + Since printers support "paged" output, unlike video, a portion + of the Xp Extension supports APIs to delineate printed output. + For example, XpStartPage and XpEndPage tell the X-Server where + a physical page starts and ends in an otherwise continuous + stream of X rendering primitives. Likewise, XpStartJob and + XpEndJob determine when a collection of pages starts and ends. + XpEndJob typically causes the generated PDL to be submitted to + a spooler, such as lp1. + + + + + Since printers have extensive capabilities, another portion of + the Xp Extension supports APIs to manipulate "print contexts". + + + Once a printer is selected using the Xp Extension API, a print + context to represent it can be created. A print context + embodies the printer selected - it contains the printer's + default capabilities, selectable range of capabilities, + printer state, and generated output. Some "attributes" within + the print context can be modified by the user, and the + X-Server and print ddx driver will react accordingly. For + example, the attribute "content-orientation" can be set to + "landscape" or "portrait" (if the printer supports these + values - which can be queried using the Xprint API as well). + + + + + Since printers can have "built in" fonts, the Xp Extension in + the X-Server works with the print ddx drivers to make + available (for printing only) additional fonts on a per print + context basis. + + + When a print context is created and set for a given printer, + the X font calls may be able to access additional printer + fonts. To do this (typically), the X-Server must have access + to "printer metric files" (.pmf) that describe at minimum the + metrics of the built in fonts. + + + + + + + + USAGE + + There are three tasks to start the X Print Service: + + configuring the X Print Server, + starting the X Print Service + configuring the user session so that clients can find the running X Print Service + + + + The tasks are described in detail below. + + + + + SERVER CONFIGURATION + + The X Print Server (Xprt) can read a number of configuration files which + control its behavior and support for printers. Each vendor platform has + a default location for this information. Xprt can also read the + environment variable XPCONFIGDIR to locate alternate configuration + directories. Common settings include: + + + export XPCONFIGDIR=/X11/lib/X11/XpConfig/ + export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/ + + + + Xprt has many built-in defaults, and lacking any configuration files, + will immediately try to support all printers visible via lpstat1. + + + In order of importance for configuration by a system administrator, the + configuration files for a "C" locale are as follows (see Xprt__appmansuffix__ for more + details (including support for non-"C" locales)): + + + ${XPCONFIGDIR}/C/print/Xprinters + + + 'Xprinters' is the top most configuration file. It tells + Xprt which specific printer names (e.g. mylaser) should + be supported, and whether lpstat1 or other commands + should be used to automatically supplement the list of + printers. + + + + + + ${XPCONFIGDIR}/C/print/attributes/printer + + + The 'printer' file maps printer names to model + configurations (see 'model-config' below). For example, + "mylaser" could be mapped to a "HPDJ1600C", and all other + arbitrary printers could be mapped to a default, such as + "HPLJ4SI". When depending on lpstat1 in the Xprinters + file, setting up defaults in 'printer' becomes all the + more important. + + + + + + ${XPCONFIGDIR}/C/print/attributes/document + + + The 'document' file specifies the initial document values + for any print jobs. For example, which paper tray to + use, what default resolution, etc. + + + + + + ${XPCONFIGDIR}/C/print/attributes/job + + + The 'job' file specifies the initial job values for any + print jobs. For example, "notification-profile" can be + set so that when a print job is successfully sent to a + printer, e-mail is sent to the user. + + + + + + ${XPCONFIGDIR}/C/print/models/PSdefault/model-config + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf + + + + The 'model-config' file has attributes that describe the + printer model’s capabilities and default settings. + Printer model fonts may also be present. The model-config + file also identifies the print ddx driver to be used. + + For each printer model supported, a complete hierarchy of + files should exist. In most cases, these files do not + need to be modified. + + + + + + ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl + ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf + ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript + + + + The print ddx drivers can have highly specific + configuration files to control their behavior. In most + cases, these files do not need to be modified. + + + + + + More information in how to configure and customize the X print server can be found in the + Xprt__appmansuffix__ + manual page. + + + + + STARTING UP + + The summary checklist for starting the X Print Service is as follows: + + + + + Choose an execution model for the X Print Service. The X + Print Service can be run on a per-user session basis, per + machine basis, or can be run on a few machines globally + available to a number of users. + + + + + If print jobs are to be submitted to a spooler (almost always + the case), make sure all needed printers are available to the + spooler subsystem (most often lp1) + on the same machine running the X Print Service. + + + + + Configure the X Print Server. See ``X Print Server + Configuration''. + + + + + Depending on #1, start the X Print Server process "Xprt", and + then the toolkit-specific Print Dialog Manager Daemon process + (such as CDEnext's "dtpdmd") at the appropriate times. + Note that libXprintUtils-based applications/toolkits do not need + a Print Dialog Manager Daemon process to use Xprint. + + + + The details are described below. + + + Because the X Print Service is based on X, it can be easily distributed. + The most significant factors in which execution model to choose will be + driven by: + + + + how many printers will be accessable through the printer + subsystem on any given machine. A system administrator may + choose to cluster printers on a few given machines, or + scatter them across an organization and possibly make + extensive use of remote spoolers to make them globally + available. + + + + + how many machines will need a copy of the X Print Server + configuration files. The files have been architected so + that one super-set version of them can be maintained and + distributed (e.g. via NFS), and a per-machine or per-user + version of the `Xprinters' is all that is needed to have the + appropriate information in them utilized or ignored. + + + + + how many users can demand services from a given X Print + Service. + + + + + With the above in mind, some obvious execution models include: + + + + Global - in this model, the system administrator is choosing + to run the X Print Service on a *few* select machines with + appropriate printers configured, and allow clients access to + the global resource. This can centralize the administration + of printers and configuration files, but may have to be + monitored for performance loading. + + + Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). + + + + + + Per-machine - every machine with potential X Print Service + users would run the service. Printer and configuration file + administration is decentralized, and usage would be limited + to the users on the machine. + + + Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). + + + + + + Per-user session - every user would run an entire X Print + Service for themselves. In the future, the Video X Server + normally started may contain Print X Server capability, so + this model becomes very natural. + + + Startup would likely be done at session login or by + launching actions or processes manually once the user + logs in. Note: Deamons like "dtpdmd" must be started after Xprt. + + + + + + Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): + + + + [machineA] % Xprt [-XpFile <Xprinters file>] [:dispNum] & + + + Note that Xprt will look for configuration files in either + a default location or where XPCONFIGDIR points. + + + specifies an alternate `Xprinters' file, rather + than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. + + + + + [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] & + + + The dtpdmd will maintain an X-Selection on the X-Server, + and will start dtpdm's as required to service requests. + + + + + + In all but the per-user session model, the machine running the dtpdmd + (thus dtpdm's) will need display authorization to the users video + display. + + + + + CLIENT CONFIGURATION + + Once a X Print Server and dtpdmd have been started -- many of them + in some cases -- clients will need to find and use them. There are + two mechanisms that allow clients to discover X Print Servers and + printers. + + + + + "X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print + applications, the following notation is understood: + + + printer_name@machine[:dispNum] + + + For example: + + + colorlj7@printhub:2 + + + In the above example, the X Print Server running at `printhub:2' + is assumed to support the printer named `colorlj7'. + + + + + ${XPSERVERLIST} - assuming usage of the DtPrint print dialogs, + the environment variable ${XPSERVERLIST} can contain a list + of X Print Servers. For example: + + + XPSERVERLIST="printhub:2 printhub:3 otherdept:0" + + + Then in the dialogs, only a printer name needs to be entered. + The dialog will then search the X Print Servers in ${XPSERVERLIST} + for a server than supports the printer, and then establish + contact. + + + + + + + + END-USER SEQUENCE + + From most CDEnext applications, printing is accomplished by bringing + down the <File> menu and selecting <Print...>. This will result in + the DtPrintSetupBox dialog, which will request the name of a printer, + and offer limited capability to configure print options (e.g. number + of copies). If the user wishes, they can select <Setup...>, which + will start a dtpdm capable of modifying additional print options. + Finally, the user should select <Print>. + + + + + ENVIRONMENT + + + ${XPCONFIGDIR} + + This environment variable points to the root + of the Xprint server configuration directory hierarchy. + If the variable is not defined, the default + path is be assumed. The default path may be + /usr/X11R6/lib/X11/xserver/, + /usr/lib/X11/xserver/, + /usr/share/Xprint/xserver/ or + /usr/openwin/server/etc/XpConfig, depending on the + system, and may be configured in /etc/init.d/xprint. + + + + + ${LANG} + + + This environment variable selects the locale settings used by the Xprint server. + Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) + which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). + If ${LANG} is not set "C" is assumed. + + + + + + ${XPSERVERLIST} + + The environment variable ${XPSERVERLIST} contains a list + of display identifiers (separated by whitespace) which tell an + application where it can find the Xprint servers. Usually + ${XPSERVERLIST} is set by the profile startup scripts (e.g. + /etc/profile or /etc/profile.d/xprint.sh) using the output of + /etc/init.d/xprint get_xpserverlist. + Example: + + + export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`" + + + Alternatively ${XPSERVERLIST} can be set + manually. Example: + + + export XPSERVERLIST="littlecat:80 bitdog:72" + + + instructs an application to find an Xprint server at display + 80 on the machine "littlecat" and at display 72 on the + machine bigdog. + + + + + + ${XPRINTER} + + + The environment variable ${XPRINTER} + defines the default printer used by print + applications. The syntax is either + printername or + printername@display. + Examples: + + + XPRINTER=ps003 + + tells an application to look for the + first printer named "ps003" on all Xprint + servers. + + + + + + XPRINTER=hplaser19@littlecat:80 + + tells an application to use the printer "hplaser19" + on the Xprint server at display + "littlecat:80". + + + + + + If ${XPRINTER} is not set the applications + will examine the values of the ${PDPRINTER}, + ${LPDEST}, and + ${PRINTER} environment variables (in that order). + + + + + + + + SEE ALSO + + + + + + + + X11__miscmansuffix__ + xplsprinters__appmansuffix__ + xprehashprinterlist__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ + + libXp__libmansuffix__ + libXprintUtils__libmansuffix__ + libXprintAppUtils__libmansuffix__ + XmPrintShell__libmansuffix__ + XawPrintShell__libmansuffix__ + Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html) + Xprint main site (http://xprint.mozdev.org/) + + + + + + AUTHORS + + This manual page was written by + Roland Mainz roland.mainz@nrubsig.org based on the original X11R6.6 + xc/programs/Xserver/XpConfig/README. + + + + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/Makefile x11r682/xc/extras/Mesa/Makefile --- xc/extras/Mesa/Makefile 2004-08-28 06:26:58.000000000 +0200 +++ xc/extras/Mesa/Makefile 2004-12-15 02:50:55.000000000 +0100 @@ -45,17 +45,22 @@ # Rules to set/install a specific build configuration aix \ +aix-64 \ aix-gcc \ aix-static \ beos \ darwin \ darwin-static \ freebsd \ +freebsd-dri \ +freebsd-dri-x86 \ hpux10 \ hpux10-gcc \ hpux10-static \ +hpux11-32 \ hpux11-32-static \ hpux11-32-static-nothreads \ +hpux11-64 \ hpux11-64-static \ hpux9 \ hpux9-gcc \ @@ -81,6 +86,7 @@ linux-ppc \ linux-ppc-static \ linux-solo \ +linux-solo-x86 \ linux-solo-ia64 \ linux-sparc \ linux-sparc5 \ @@ -111,9 +117,9 @@ # Rules for making release tarballs -DIRECTORY = Mesa-6.1 -LIB_NAME = MesaLib-6.1 -DEMO_NAME = MesaDemos-6.1 +DIRECTORY = Mesa-6.2.1 +LIB_NAME = MesaLib-6.2.1 +DEMO_NAME = MesaDemos-6.2.1 LIB_FILES = \ $(DIRECTORY)/Makefile* \ @@ -121,6 +127,7 @@ $(DIRECTORY)/mms-config. \ $(DIRECTORY)/Mesa.dsw \ $(DIRECTORY)/bin/mklib \ + $(DIRECTORY)/bin/installmesa \ $(DIRECTORY)/configs/[a-z]* \ $(DIRECTORY)/docs/*.html \ $(DIRECTORY)/docs/COPYING \ @@ -186,7 +193,6 @@ $(DIRECTORY)/src/mesa/tnl_dd/imm/*.[ch] \ $(DIRECTORY)/src/mesa/tnl_dd/imm/NOTES.imm \ $(DIRECTORY)/src/mesa/drivers/beos/*.cpp \ - $(DIRECTORY)/src/mesa/drivers/beos/*.h \ $(DIRECTORY)/src/mesa/drivers/beos/Makefile \ $(DIRECTORY)/src/mesa/drivers/common/*.[ch] \ $(DIRECTORY)/src/mesa/drivers/common/descrip.mms \ @@ -249,6 +255,7 @@ $(DIRECTORY)/src/glw/*.[ch] \ $(DIRECTORY)/src/glw/Makefile* \ $(DIRECTORY)/src/glw/README \ + $(DIRECTORY)/src/glw/depend \ $(DIRECTORY)/progs/Makefile \ $(DIRECTORY)/progs/util/README \ $(DIRECTORY)/progs/util/*.[ch] \ @@ -274,6 +281,8 @@ $(DIRECTORY)/src/glut/dos/*.[ch] \ $(DIRECTORY)/src/glut/dos/Makefile.DJ \ $(DIRECTORY)/src/glut/dos/PC_HW/*.[chS] \ + $(DIRECTORY)/src/glut/ggi/*.[ch] \ + $(DIRECTORY)/src/glut/ggi/Makefile \ $(DIRECTORY)/progs/beos/*.cpp \ $(DIRECTORY)/progs/beos/Makefile \ $(DIRECTORY)/progs/images/*.rgb \ @@ -301,6 +310,26 @@ $(DIRECTORY)/progs/ggi/*.c +DRI_FILES = \ + $(DIRECTORY)/src/glx/Makefile \ + $(DIRECTORY)/src/glx/mini/*.[ch] \ + $(DIRECTORY)/src/glx/mini/example.miniglx.conf \ + $(DIRECTORY)/src/glx/mini/NOTES \ + $(DIRECTORY)/src/mesa/drivers/dri/Makefile \ + $(DIRECTORY)/src/mesa/drivers/dri/Makefile.template \ + $(DIRECTORY)/src/mesa/drivers/dri/common/*.[ch] \ + $(DIRECTORY)/src/mesa/drivers/dri/dri_client/imports/*.h \ + $(DIRECTORY)/src/mesa/drivers/dri/*/*.[ch] \ + $(DIRECTORY)/src/mesa/drivers/dri/*/depend \ + $(DIRECTORY)/src/mesa/drivers/dri/*/Makefile \ + $(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile \ + $(DIRECTORY)/src/mesa/drivers/dri/*/server/*.[ch] + + +# Everything for new a Mesa release: +tarballs: lib_gz demo_gz lib_bz2 demo_bz2 lib_zip demo_zip md5 + + lib_gz: rm -f configs/current ; \ cd .. ; \ @@ -347,6 +376,3 @@ @-md5sum $(DEMO_NAME).tar.gz @-md5sum $(DEMO_NAME).tar.bz2 @-md5sum $(DEMO_NAME).zip - -# Everything for new a Mesa release: -tarballs: lib_gz demo_gz lib_bz2 demo_bz2 lib_zip demo_zip md5 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/Makefile.mgw x11r682/xc/extras/Mesa/Makefile.mgw --- xc/extras/Mesa/Makefile.mgw 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/Makefile.mgw 2004-12-15 02:50:55.000000000 +0100 @@ -40,6 +40,9 @@ # 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 # @@ -56,7 +59,13 @@ CPU ?= pentium -CFLAGS = -Wall -W -pedantic +ifeq ($(ICD),1) + # when -std=c99 mingw will not define WIN32 + CFLAGS = -Wall -W -Werror +else + # I love c89 + CFLAGS = -Wall -W -pedantic +endif CFLAGS += -O2 -ffast-math -mcpu=$(CPU) export CFLAGS diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/Mesa.dsw x11r682/xc/extras/Mesa/Mesa.dsw --- xc/extras/Mesa/Mesa.dsw 2004-08-28 06:26:58.000000000 +0200 +++ xc/extras/Mesa/Mesa.dsw 2004-12-15 02:50:55.000000000 +0100 @@ -3,7 +3,7 @@ ############################################################################### -Project: "array_cache"=.\SRC\MESA\array_cache\array_cache.dsp - Package Owner=<4> +Project: "array_cache"=".\SRC\MESA\array_cache\array_cache.dsp" - Package Owner=<4> Package=<5> {{{ @@ -15,7 +15,7 @@ ############################################################################### -Project: "gdi"=.\src\mesa\drivers\windows\gdi\gdi.dsp - Package Owner=<4> +Project: "gdi"=".\src\mesa\drivers\windows\gdi\gdi.dsp" - Package Owner=<4> Package=<5> {{{ @@ -51,7 +51,7 @@ ############################################################################### -Project: "glapi"=.\SRC\MESA\glapi\glapi.dsp - Package Owner=<4> +Project: "glapi"=".\SRC\MESA\glapi\glapi.dsp" - Package Owner=<4> Package=<5> {{{ @@ -63,7 +63,7 @@ ############################################################################### -Project: "glu"=.\src\glu\sgi\glu.dsp - Package Owner=<4> +Project: "glu"=".\src\glu\sgi\glu.dsp" - Package Owner=<4> Package=<5> {{{ @@ -78,22 +78,7 @@ ############################################################################### -Project: "glut"=.\src\glut\glx\glut.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glu - End Project Dependency -}}} - -############################################################################### - -Project: "main"=.\SRC\MESA\main\main.dsp - Package Owner=<4> +Project: "main"=".\SRC\MESA\main\main.dsp" - Package Owner=<4> Package=<5> {{{ @@ -105,7 +90,7 @@ ############################################################################### -Project: "math"=.\SRC\MESA\math\math.dsp - Package Owner=<4> +Project: "math"=".\SRC\MESA\math\math.dsp" - Package Owner=<4> Package=<5> {{{ @@ -117,7 +102,7 @@ ############################################################################### -Project: "osmesa"=.\SRC\MESA\DRIVERS\osmesa\osmesa.dsp - Package Owner=<4> +Project: "osmesa"=".\SRC\MESA\DRIVERS\osmesa\osmesa.dsp" - Package Owner=<4> Package=<5> {{{ @@ -132,7 +117,7 @@ ############################################################################### -Project: "shader"=.\SRC\MESA\shader\shader.dsp - Package Owner=<4> +Project: "shader"=".\SRC\MESA\shader\shader.dsp" - Package Owner=<4> Package=<5> {{{ @@ -144,7 +129,7 @@ ############################################################################### -Project: "swrast"=.\SRC\MESA\swrast\swrast.dsp - Package Owner=<4> +Project: "swrast"=".\SRC\MESA\swrast\swrast.dsp" - Package Owner=<4> Package=<5> {{{ @@ -156,7 +141,7 @@ ############################################################################### -Project: "swrast_setup"=.\SRC\MESA\swrast_setup\swrast_setup.dsp - Package Owner=<4> +Project: "swrast_setup"=".\SRC\MESA\swrast_setup\swrast_setup.dsp" - Package Owner=<4> Package=<5> {{{ @@ -168,7 +153,7 @@ ############################################################################### -Project: "tnl"=.\SRC\MESA\tnl\tnl.dsp - Package Owner=<4> +Project: "tnl"=".\SRC\MESA\tnl\tnl.dsp" - Package Owner=<4> Package=<5> {{{ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/bin/mklib x11r682/xc/extras/Mesa/bin/mklib --- xc/extras/Mesa/bin/mklib 2004-08-28 06:26:58.000000000 +0200 +++ xc/extras/Mesa/bin/mklib 2004-12-15 02:50:55.000000000 +0100 @@ -116,6 +116,14 @@ 'Linux' | 'OpenBSD') # GCC-based environment + # Set default compilers if env vars not set + if [ "x$CXX" = "x" ] ; then + CXX=g++ + fi + if [ "x$CC" = "x" ] ; then + CC=gcc + fi + if [ $NOPREFIX = 1 ] ; then # No "lib" or ".so" part echo "mklib: Making" $ARCH "shared library: " ${LIBNAME} @@ -372,7 +380,30 @@ ar -X64 -ruv ${LIBNAME} ${OBJECTS} FINAL_LIBS=${LIBNAME} else - echo "mklib: PROBLEM: AIX64 shared libs not supported!!!" + EXPFILE="lib${LIBNAME}.exp" + OFILE=shr.o #Want to be consistent with the IBM libGL.a + LIBNAME="lib${LIBNAME}.a" # shared objects are still stored in the .a libraries + OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry -q64" + rm -f ${EXPFILE} ${OFILE} + NM="/bin/nm -eC -X64" + echo "#! /usr/lib/${LIBNAME}" > ${EXPFILE} + ${NM} ${OBJECTS} | awk '{ + if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \ + && ( substr($1,1,1) != ".")) { + if (substr ($1, 1, 7) != "__sinit" && + substr ($1, 1, 7) != "__sterm") { + if (substr ($1, 1, 5) == "__tf1") + print (substr ($1, 7)) + else if (substr ($1, 1, 5) == "__tf9") + print (substr ($1, 15)) + else + print $1 + } + } + }' | sort -u >> ${EXPFILE} + cc ${OPTS} -o ${OFILE} ${OBJECTS} ${DEPS} + ar -X64 -r ${LIBNAME} ${OFILE} + FINAL_LIBS="${LIBNAME}" fi ;; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/aix x11r682/xc/extras/Mesa/configs/aix --- xc/extras/Mesa/configs/aix 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/aix 2004-12-15 02:50:55.000000000 +0100 @@ -20,9 +20,9 @@ OSMESA_LIB_NAME = libOSMesa.a GL_LIB_DEPS = -lX11 -lXext -lm -GLU_LIB_DEPS = -L$(TOP)/lib -lGL -lm -lC -GLUT_LIB_DEPS = -L$(TOP)/lib -lGLU -lGL -lXi -lXmu -lX11 -lm -GLW_LIB_DEPS = -L$(TOP)/lib -lGL -lXt -lX11 -OSMESA_LIB_DEPS = -L$(TOP)/lib -lGL -APP_LIB_DEPS = -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm -lC +GLU_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lm -lC +GLUT_LIB_DEPS = -L$(TOP)/lib -l$(GLU_LIB) -l$(GL_LIB) -lXi -lXmu -lX11 -lm +GLW_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lXt -lX11 +OSMESA_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) +APP_LIB_DEPS = -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm -lC diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/aix-64 x11r682/xc/extras/Mesa/configs/aix-64 --- xc/extras/Mesa/configs/aix-64 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/aix-64 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,28 @@ +# Configuration for AIX 64-bit, dynamic libs + +include $(TOP)/configs/default + +CONFIG_NAME = aix-64 + +# Compiler and flags +CC = xlc +CXX = xlC + +CFLAGS = -q64 -qmaxmem=16384 -O -DAIXV3 +CXXFLAGS = -q64 -qmaxmem=16384 -O -DAIXV3 +MKLIB_OPTIONS = -arch AIX64 + +# Library names (actual file names) +GL_LIB_NAME = libGL.a +GLU_LIB_NAME = libGLU.a +GLUT_LIB_NAME = libglut.a +GLW_LIB_NAME = libGLw.a +OSMESA_LIB_NAME = libOSMesa.a + +GL_LIB_DEPS = -lX11 -lXext -lm +GLU_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lm -lC +GLUT_LIB_DEPS = -L$(TOP)/lib -l$(GLU_LIB) -l$(GL_LIB) -lXi -lXmu -lX11 -lm +GLW_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) -lXt -lX11 +OSMESA_LIB_DEPS = -L$(TOP)/lib -l$(GL_LIB) +APP_LIB_DEPS = -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm -lC + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/aix-gcc x11r682/xc/extras/Mesa/configs/aix-gcc --- xc/extras/Mesa/configs/aix-gcc 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/aix-gcc 2004-12-15 02:50:55.000000000 +0100 @@ -13,7 +13,7 @@ MKLIB_OPTIONS = -arch aix-gcc GL_LIB_DEPS = -lX11 -lXext -lm -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR -lGLU -lGL -lXi -lXmu -APP_LIB_DEPS = -L$(LIB_DIR) -Wl,-brtl -lglut -lGLU -lGL -lm -lX11 -lXext -lXmu -lXi +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR -l$(GLU_LIB) -l$(GL_LIB) -lXi -lXmu +APP_LIB_DEPS = -L$(LIB_DIR) -Wl,-brtl -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lX11 -lXext -lXmu -lXi diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/beos x11r682/xc/extras/Mesa/configs/beos --- xc/extras/Mesa/configs/beos 2004-08-28 06:27:03.000000000 +0200 +++ xc/extras/Mesa/configs/beos 2004-12-15 02:50:55.000000000 +0100 @@ -42,11 +42,10 @@ ifdef DEBUG CFLAGS += -g -O0 - CXXFLAGS += -g -O0 LDFLAGS += -g + DEFINES += -DDEBUG else CFLAGS += -O3 - CXXFLAGS += -O3 endif GLUT_CFLAGS = -fexceptions @@ -93,8 +92,8 @@ # Library/program dependencies GL_LIB_DEPS = -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL +OSMESA_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) GLU_LIB_DEPS = -GLUT_LIB_DEPS = -lgame -L$(LIB_DIR) -lGL -APP_LIB_DEPS = -lbe -L$(LIB_DIR) -lGL -lglut +GLUT_LIB_DEPS = -lgame -L$(LIB_DIR) -l$(GL_LIB) +APP_LIB_DEPS = -lbe -L$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/darwin x11r682/xc/extras/Mesa/configs/darwin --- xc/extras/Mesa/configs/darwin 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/darwin 2004-12-15 02:50:55.000000000 +0100 @@ -22,4 +22,4 @@ GLU_LIB_DEPS = $(TOP)/lib/GL.dylib GLUT_LIB_DEPS = GLW_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXt $(TOP)/lib/GL.dylib -APP_LIB_DEPS = -L$(TOP)/lib -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/darwin-static x11r682/xc/extras/Mesa/configs/darwin-static --- xc/extras/Mesa/configs/darwin-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/darwin-static 2004-12-15 02:50:55.000000000 +0100 @@ -21,4 +21,4 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(TOP)/lib -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/default x11r682/xc/extras/Mesa/configs/default --- xc/extras/Mesa/configs/default 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/default 2004-12-15 02:50:55.000000000 +0100 @@ -7,8 +7,8 @@ # Version info MESA_MAJOR=6 -MESA_MINOR=1 -MESA_TINY=0 +MESA_MINOR=2 +MESA_TINY=1 # external projects DRM_SOURCE_PATH=$(TOP)/../drm @@ -61,8 +61,8 @@ # Library/program dependencies GL_LIB_DEPS = -lX11 -lXext -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +OSMESA_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/freebsd-dri x11r682/xc/extras/Mesa/configs/freebsd-dri --- xc/extras/Mesa/configs/freebsd-dri 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/freebsd-dri 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,39 @@ +# -*-makefile-*- +# Configuration for freebsd-dri: FreeBSD DRI hardware drivers + +include $(TOP)/configs/freebsd + +CONFIG_NAME = freebsd-dri + +# Compiler and flags +CC = gcc +CXX = g++ +WARN_FLAGS = -Wall +OPT_FLAGS = -O + +CFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wmissing-prototypes -g -std=c99 -Wundef -fPIC -ffast-math -I/usr/local/include -I/usr/X11R6/include -I/usr/X11R6/include/X11/extensions +CXXFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wall -g -ansi -pedantic -fPIC + +ASM_SOURCES = + +# Library/program dependencies +DRI_LIB_DEPS = -lm -lpthread -lexpat +GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -pthread + +GLUT_LIB_DEPS = -L$(LIB_DIR) -L/usr/X11R6/lib -lGLU -lGL -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -L/usr/X11R6/lib -lGL -lXt -lXm -lX11 + + +# Directories +SRC_DIRS = mesa glu glut/glx glw glx/x11 +DRIVER_DIRS = dri +PROGRAM_DIRS = +WINDOW_SYSTEM=dri + +DRM_SOURCE_PATH=$(TOP)/../drm + +# ffb and gamma are missing because they have not been converted to use the new +# interface. +DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx \ + unichrome savage sis + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/freebsd-dri-x86 x11r682/xc/extras/Mesa/configs/freebsd-dri-x86 --- xc/extras/Mesa/configs/freebsd-dri-x86 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/freebsd-dri-x86 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,12 @@ +# -*-makefile-*- +# Configuration for freebsd-dri: FreeBSD DRI hardware drivers + +include $(TOP)/configs/freebsd-dri + +CONFIG_NAME = freebsd-dri-x86 + +# Unnecessary on x86, generally. +PIC_FLAGS = + +ASM_FLAGS = -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM +ASM_SOURCES = $(X86_SOURCES) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/hpux10-static x11r682/xc/extras/Mesa/configs/hpux10-static --- xc/extras/Mesa/configs/hpux10-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/hpux10-static 2004-12-15 02:50:55.000000000 +0100 @@ -26,5 +26,5 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm -lstdc++ +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm -lstdc++ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/hpux11-32 x11r682/xc/extras/Mesa/configs/hpux11-32 --- xc/extras/Mesa/configs/hpux11-32 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/hpux11-32 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,26 @@ +# Configuration for HPUX v11 + +include $(TOP)/configs/default + +CONFIG_NAME = hpux11-32 + +# Compiler and flags +CC = cc +CXX = aCC + +CFLAGS = +z -Ae +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM -DPTHREADS + +CXXFLAGS = +z -Aa +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include + +MKLIB_OPTIONS = + + +# Library names (actual file names) +GL_LIB_NAME = libGL.a +GLU_LIB_NAME = libGLU.a +GLUT_LIB_NAME = libglut.a +GLW_LIB_NAME = libGLw.a +OSMESA_LIB_NAME = libOSMesa.a + +# Library/program dependencies +APP_LIB_DEPS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/hpux11-64 x11r682/xc/extras/Mesa/configs/hpux11-64 --- xc/extras/Mesa/configs/hpux11-64 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/hpux11-64 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,27 @@ +# Configuration for HPUX v11, 64-bit + +include $(TOP)/configs/default + +CONFIG_NAME = hpux11-64 + +# Compiler and flags +CC = cc +CXX = aCC + +CFLAGS = +z -Ae +DD64 +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM -DPTHREADS + +CXXFLAGS = +z -Aa +DD64 +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include + +MKLIB_OPTIONS = + +LIBDIR = $(TOP)/lib64 + +# Library names (actual file names) +GL_LIB_NAME = libGL.a +GLU_LIB_NAME = libGLU.a +GLUT_LIB_NAME = libglut.a +GLW_LIB_NAME = libGLw.a +OSMESA_LIB_NAME = libOSMesa.a + +# Library/program dependencies +APP_LIB_DEPS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-64 x11r682/xc/extras/Mesa/configs/irix6-64 --- xc/extras/Mesa/configs/irix6-64 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-64 2004-12-15 02:50:55.000000000 +0100 @@ -15,4 +15,4 @@ LIB_DIR = $(TOP)/lib64 -APP_LIB_DEPS = -L$(LIB_DIR) -64 -rpath $(LIB_DIR) -lglut -lGLU -lGL -lX11 -lXmu -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -64 -rpath $(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-64-static x11r682/xc/extras/Mesa/configs/irix6-64-static --- xc/extras/Mesa/configs/irix6-64-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-64-static 2004-12-15 02:50:55.000000000 +0100 @@ -15,7 +15,7 @@ LIB_DIR = $(TOP)/lib64 -APP_LIB_DEPS = -L$(LIB_DIR) -64 -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -64 -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm GL_LIB_NAME = libGL.a GLU_LIB_NAME = libGLU.a diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-n32 x11r682/xc/extras/Mesa/configs/irix6-n32 --- xc/extras/Mesa/configs/irix6-n32 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-n32 2004-12-15 02:50:55.000000000 +0100 @@ -15,4 +15,4 @@ LIB_DIR = $(TOP)/lib32 -APP_LIB_DEPS = -L$(LIB_DIR) -n32 -rpath $(LIB_DIR) -lglut -lGLU -lGL -lX11 -lXmu -lXi -lfpe -lm +APP_LIB_DEPS = -L$(LIB_DIR) -n32 -rpath $(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXi -lfpe -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-n32-static x11r682/xc/extras/Mesa/configs/irix6-n32-static --- xc/extras/Mesa/configs/irix6-n32-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-n32-static 2004-12-15 02:50:55.000000000 +0100 @@ -15,7 +15,7 @@ LIB_DIR = $(TOP)/lib32 -APP_LIB_DEPS = -L$(LIB_DIR) -n32 -glut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -n32 -glut -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm GL_LIB_NAME = libGL.a GLU_LIB_NAME = libGLU.a diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-o32 x11r682/xc/extras/Mesa/configs/irix6-o32 --- xc/extras/Mesa/configs/irix6-o32 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-o32 2004-12-15 02:50:55.000000000 +0100 @@ -15,5 +15,5 @@ LIB_DIR = $(TOP)/lib32 -APP_LIB_DEPS = -L$(LIB_DIR) -32 -rpath $(LIB_DIR) -lglut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -32 -rpath $(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/irix6-o32-static x11r682/xc/extras/Mesa/configs/irix6-o32-static --- xc/extras/Mesa/configs/irix6-o32-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/irix6-o32-static 2004-12-15 02:50:55.000000000 +0100 @@ -15,7 +15,7 @@ LIB_DIR = $(TOP)/lib32 -APP_LIB_DEPS = -L$(LIB_DIR) -32 -glut -lGLU -lGL -lX11 -lXext -lXmu -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -32 -glut -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm GL_LIB_NAME = libGL.a GLU_LIB_NAME = libGLU.a diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux x11r682/xc/extras/Mesa/configs/linux --- xc/extras/Mesa/configs/linux 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux 2004-12-15 02:50:55.000000000 +0100 @@ -14,9 +14,7 @@ # Library/program dependencies +# Need to have -L/usr/X11R6/lib in these: GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-alpha x11r682/xc/extras/Mesa/configs/linux-alpha --- xc/extras/Mesa/configs/linux-alpha 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/linux-alpha 2004-12-15 02:50:55.000000000 +0100 @@ -12,8 +12,7 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-alpha-static x11r682/xc/extras/Mesa/configs/linux-alpha-static --- xc/extras/Mesa/configs/linux-alpha-static 2004-06-16 11:16:21.000000000 +0200 +++ xc/extras/Mesa/configs/linux-alpha-static 2004-12-15 02:50:55.000000000 +0100 @@ -22,7 +22,6 @@ GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm -L/usr/X11R6/lib -lX11 -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -L/usr/X11R6/lib -lX11 -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-debug x11r682/xc/extras/Mesa/configs/linux-debug --- xc/extras/Mesa/configs/linux-debug 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-debug 2004-12-15 02:50:55.000000000 +0100 @@ -14,9 +14,7 @@ GLUT_CFLAGS = -fexceptions +# Need to have -L/usr/X11R6/lib in these: GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -lXt -L/usr/X11R6/lib -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lXt -L/usr/X11R6/lib -lX11 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-dri x11r682/xc/extras/Mesa/configs/linux-dri --- xc/extras/Mesa/configs/linux-dri 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-dri 2004-12-15 02:50:55.000000000 +0100 @@ -9,19 +9,26 @@ CC = gcc CXX = g++ -CFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wmissing-prototypes -g -std=c99 -Wundef -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DPTHREADS -D_GNU_SOURCE -I/usr/X11R6/include -I/usr/X11R6/include/X11/extensions - -CXXFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wall -g -ansi -pedantic -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE - +WARN_FLAGS = -Wall +OPT_FLAGS = -O +SOURCE_FLAGS = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \ + -D_BSD_SOURCE -D_GNU_SOURCE +PIC_FLAGS = -fPIC + +CFLAGS = -DDRI_NEW_INTERFACE_ONLY $(WARN_FLAGS) -g $(OPT_FLAGS) $(ASM_FLAGS) \ + -std=c99 $(PIC_FLAGS) -ffast-math $(SOURCE_FLAGS) -DPTHREADS \ + -I/usr/X11R6/include -I/usr/X11R6/include/X11/extensions +CXXFLAGS = -DDRI_NEW_INTERFACE_ONLY $(WARN_FLAGS) -g $(OPT_FLAGS) -fPIC \ + $(SOURCE_FLAGS) ASM_SOURCES = # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -lexpat -ldl -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 # Directories @@ -30,8 +37,8 @@ PROGRAM_DIRS = WINDOW_SYSTEM=dri -# Savage is missing. ffb, gamma, and sis are also missing because they have -# not be converted to use the new interface. -# -DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx unichrome +# ffb and gamma are missing because they have not been converted to use the new +# interface. +DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx \ + unichrome savage sis diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-dri-x86 x11r682/xc/extras/Mesa/configs/linux-dri-x86 --- xc/extras/Mesa/configs/linux-dri-x86 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-dri-x86 2004-12-15 02:50:55.000000000 +0100 @@ -1,35 +1,12 @@ # -*-makefile-*- # Configuration for linux-dri: Linux DRI hardware drivers for XFree86 & others -include $(TOP)/configs/default +include $(TOP)/configs/linux-dri CONFIG_NAME = linux-dri-x86 -# Compiler and flags -CC = gcc -CXX = g++ - -CFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wmissing-prototypes -g -std=c99 -Wundef -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DPTHREADS -D_GNU_SOURCE -I/usr/X11R6/include -I/usr/X11R6/include/X11/extensions - -CXXFLAGS = -DDRI_NEW_INTERFACE_ONLY -Wall -g -ansi -pedantic -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE +# Unnecessary on x86, generally. +PIC_FLAGS = +ASM_FLAGS = -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM ASM_SOURCES = $(X86_SOURCES) - -# Library/program dependencies -GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -lexpat -ldl - -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 - - -# Directories -SRC_DIRS = mesa glu glut/glx glw -DRIVER_DIRS = dri -PROGRAM_DIRS = -WINDOW_SYSTEM=dri - -# Savage is missing. ffb, gamma, and sis are also missing because they have -# not be converted to use the new interface. -# -DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx unichrome - diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-dri-x86-64 x11r682/xc/extras/Mesa/configs/linux-dri-x86-64 --- xc/extras/Mesa/configs/linux-dri-x86-64 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-dri-x86-64 2004-12-15 02:50:55.000000000 +0100 @@ -19,8 +19,8 @@ # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib64 -lX11 -lXext -lm -lpthread -lexpat -ldl -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib64 -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib64 -lXt -lX11 +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib64 -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib64 -lXt -lX11 # Directories SRC_DIRS = mesa glu glut/glx glw @@ -28,9 +28,9 @@ PROGRAM_DIRS = WINDOW_SYSTEM=dri -# Savage is missing. ffb, gamma, and sis are also missing because they have +# ffb, gamma, and sis are missing because they have # not be converted to use the new interface. Do i810 & i830 really # need to be included here? # -DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx unichrome +DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon tdfx unichrome savage diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-glide x11r682/xc/extras/Mesa/configs/linux-glide --- xc/extras/Mesa/configs/linux-glide 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-glide 2004-12-15 02:50:55.000000000 +0100 @@ -15,8 +15,6 @@ # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -L/usr/local/glide/lib -lglide3x -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/local/glide/lib -lglide3x -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/local/glide/lib -lglide3x -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-icc x11r682/xc/extras/Mesa/configs/linux-icc --- xc/extras/Mesa/configs/linux-icc 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-icc 2004-12-15 02:50:55.000000000 +0100 @@ -13,9 +13,8 @@ MKLIB_OPTIONS = -arch icc GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm ASM_SOURCES = $(X86_SOURCES) $(X86_API) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-icc-static x11r682/xc/extras/Mesa/configs/linux-icc-static --- xc/extras/Mesa/configs/linux-icc-static 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-icc-static 2004-12-15 02:50:55.000000000 +0100 @@ -20,9 +20,8 @@ OSMESA_LIB_NAME = libOSMesa.a GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm MKLIB_OPTIONS = -arch icc ASM_SOURCES = $(X86_SOURCES) $(X86_API) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-ppc x11r682/xc/extras/Mesa/configs/linux-ppc --- xc/extras/Mesa/configs/linux-ppc 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-ppc 2004-12-15 02:50:55.000000000 +0100 @@ -12,8 +12,7 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-ppc-static x11r682/xc/extras/Mesa/configs/linux-ppc-static --- xc/extras/Mesa/configs/linux-ppc-static 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-ppc-static 2004-12-15 02:50:55.000000000 +0100 @@ -21,7 +21,6 @@ GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-solo x11r682/xc/extras/Mesa/configs/linux-solo --- xc/extras/Mesa/configs/linux-solo 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-solo 2004-12-15 02:50:55.000000000 +0100 @@ -19,9 +19,9 @@ # Library/program dependencies GL_LIB_DEPS = -lm -lpthread -lexpat -ldl -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lm -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm -lpthread +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lpthread # Directories SRC_DIRS = mesa glx glu glut/mini diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-solo-ia64 x11r682/xc/extras/Mesa/configs/linux-solo-ia64 --- xc/extras/Mesa/configs/linux-solo-ia64 2004-08-13 01:04:47.000000000 +0200 +++ xc/extras/Mesa/configs/linux-solo-ia64 2004-12-15 02:50:55.000000000 +0100 @@ -17,9 +17,8 @@ # Library/program dependencies GL_LIB_DEPS = -lm -lpthread -lexpat -ldl -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lm -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm -lpthread +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lpthread # Directories SRC_DIRS = mesa glx glu glut/mini diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-solo-x86 x11r682/xc/extras/Mesa/configs/linux-solo-x86 --- xc/extras/Mesa/configs/linux-solo-x86 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/configs/linux-solo-x86 2004-12-15 02:50:55.000000000 +0100 @@ -0,0 +1,31 @@ +# Configuration for linux-solo: Linux DRI hardware drivers for fbdev + +include $(TOP)/configs/default + +CONFIG_NAME = linux-solo-x86 + +# Compiler and flags +CC = gcc +CXX = g++ + +CCOMMON = -DDRI_NEW_INTERFACE_ONLY -D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L -D_GNU_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DPTHREADS + +CFLAGS = $(CCOMMON) -Wmissing-prototypes -O3 -g -std=c99 -Wundef -fPIC -ffast-math + +CXXFLAGS = $(CCOMMON) -Wall -O3 -ansi -pedantic -fPIC + + +ASM_SOURCES = $(X86_SOURCES) + +# Library/program dependencies +GL_LIB_DEPS = -lm -lpthread -lexpat -ldl +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lpthread + +# Directories +SRC_DIRS = mesa glx glu glut/mini +DRIVER_DIRS = dri +PROGRAM_DIRS = miniglx + +#DRI_DIRS = fb ffb gamma sis savage +DRI_DIRS = i810 i830 i915 mach64 mga r128 r200 radeon tdfx unichrome diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-sparc x11r682/xc/extras/Mesa/configs/linux-sparc --- xc/extras/Mesa/configs/linux-sparc 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-sparc 2004-12-15 02:50:55.000000000 +0100 @@ -12,7 +12,5 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-sparc5 x11r682/xc/extras/Mesa/configs/linux-sparc5 --- xc/extras/Mesa/configs/linux-sparc5 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-sparc5 2004-12-15 02:50:55.000000000 +0100 @@ -12,8 +12,6 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-static x11r682/xc/extras/Mesa/configs/linux-static --- xc/extras/Mesa/configs/linux-static 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-static 2004-12-15 02:50:55.000000000 +0100 @@ -27,4 +27,4 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-tcc x11r682/xc/extras/Mesa/configs/linux-tcc --- xc/extras/Mesa/configs/linux-tcc 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-tcc 2004-12-15 02:50:55.000000000 +0100 @@ -17,9 +17,6 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -L$(TCC_DIR) -ltcc -ldl - -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -lXt -L/usr/X11R6/lib -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lXt -L/usr/X11R6/lib -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-ultrasparc x11r682/xc/extras/Mesa/configs/linux-ultrasparc --- xc/extras/Mesa/configs/linux-ultrasparc 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-ultrasparc 2004-12-15 02:50:55.000000000 +0100 @@ -12,7 +12,6 @@ GLUT_CFLAGS = -fexceptions GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR)-lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR)-l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-x86 x11r682/xc/extras/Mesa/configs/linux-x86 --- xc/extras/Mesa/configs/linux-x86 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-x86 2004-12-15 02:50:55.000000000 +0100 @@ -19,8 +19,6 @@ # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-x86-64 x11r682/xc/extras/Mesa/configs/linux-x86-64 --- xc/extras/Mesa/configs/linux-x86-64 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-x86-64 2004-12-15 02:50:55.000000000 +0100 @@ -23,8 +23,6 @@ # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib64 -lX11 -lXext -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib64 -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib64 -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib64 -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib64 -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-x86-64-static x11r682/xc/extras/Mesa/configs/linux-x86-64-static --- xc/extras/Mesa/configs/linux-x86-64-static 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/linux-x86-64-static 2004-12-15 02:50:55.000000000 +0100 @@ -37,4 +37,4 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib64 -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib64 -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-x86-glide x11r682/xc/extras/Mesa/configs/linux-x86-glide --- xc/extras/Mesa/configs/linux-x86-glide 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-x86-glide 2004-12-15 02:50:55.000000000 +0100 @@ -19,8 +19,6 @@ # Library/program dependencies GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -L/usr/local/glide/lib -lglide3x -lm -lpthread -OSMESA_LIB_DEPS = -L$(LIB_DIR) -lGL -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/X11R6/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/local/glide/lib -lglide3x -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/local/glide/lib -lglide3x -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/linux-x86-static x11r682/xc/extras/Mesa/configs/linux-x86-static --- xc/extras/Mesa/configs/linux-x86-static 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/linux-x86-static 2004-12-15 02:50:55.000000000 +0100 @@ -34,4 +34,4 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm -lstdc++ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/openbsd x11r682/xc/extras/Mesa/configs/openbsd --- xc/extras/Mesa/configs/openbsd 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/openbsd 2004-12-15 02:50:56.000000000 +0100 @@ -12,7 +12,7 @@ GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm OSMESA_LIB_DEPS = -lm -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lm -APP_LIB_DEPS = -L$(LIB_DIR) -L/usr/X11R6/lib -lglut -lGLU -lGL -lm +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -L/usr/X11R6/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/osf1 x11r682/xc/extras/Mesa/configs/osf1 --- xc/extras/Mesa/configs/osf1 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/osf1 2004-12-15 02:50:56.000000000 +0100 @@ -11,8 +11,6 @@ CXXFLAGS = -O2 -std ansi -ieee GL_LIB_DEPS = -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lX11 -lXmu -lXt -lXi -lm -APP_LIB_DEPS = -L$(LIB_DIR) -lX11 -lXext -lXmu -lXi -lm - - +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXext -lXmu -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/solaris-x86-gcc x11r682/xc/extras/Mesa/configs/solaris-x86-gcc --- xc/extras/Mesa/configs/solaris-x86-gcc 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/solaris-x86-gcc 2004-12-15 02:50:56.000000000 +0100 @@ -13,9 +13,9 @@ MKLIB_OPTIONS = -static GL_LIB_DEPS = -L/usr/openwin/lib -lX11 -lXext -lm -lpthread -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -L/usr/openwin/lib -lX11 -lXmu -lXt -lXi -lm -APP_LIB_DEPS = -L$(LIB_DIR) -L/usr/openwin/lib -R/usr/openwin/lib -lglut -lGLU -lGL -lm +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/openwin/lib -lX11 -lXmu -lXt -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -L/usr/openwin/lib -R/usr/openwin/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm GL_LIB_NAME = libGL.a GLU_LIB_NAME = libGLU.a diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/sunos4-static x11r682/xc/extras/Mesa/configs/sunos4-static --- xc/extras/Mesa/configs/sunos4-static 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/sunos4-static 2004-12-15 02:50:56.000000000 +0100 @@ -22,4 +22,4 @@ GLU_LIB_DEPS = GLUT_LIB_DEPS = GLW_LIB_DEPS = -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lpthread -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/sunos5 x11r682/xc/extras/Mesa/configs/sunos5 --- xc/extras/Mesa/configs/sunos5 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/sunos5 2004-12-15 02:50:56.000000000 +0100 @@ -12,7 +12,7 @@ GLUT_CFLAGS = -DSOLARIS_2_4_BUG GL_LIB_DEPS = -L/usr/openwin/lib -L/usr/dt/lib -lX11 -lXext -lXmu -lXi -lm -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/openwin/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lCrun -lX11 -lglut -lGLU -lGL -lm +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/openwin/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -lCrun -lX11 -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/sunos5-gcc x11r682/xc/extras/Mesa/configs/sunos5-gcc --- xc/extras/Mesa/configs/sunos5-gcc 2004-07-22 08:49:32.000000000 +0200 +++ xc/extras/Mesa/configs/sunos5-gcc 2004-12-15 02:50:56.000000000 +0100 @@ -14,8 +14,8 @@ GLUT_CFLAGS = -fexceptions -DSOLARIS_2_4_BUG GL_LIB_DEPS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/openwin/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lX11 -lglut -lGLU -lGL -lm +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/openwin/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -lX11 -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/sunos5-smp x11r682/xc/extras/Mesa/configs/sunos5-smp --- xc/extras/Mesa/configs/sunos5-smp 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/sunos5-smp 2004-12-15 02:50:56.000000000 +0100 @@ -12,8 +12,8 @@ GLUT_CFLAGS = -DSOLARIS_2_4_BUG GL_LIB_DEPS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm -GLU_LIB_DEPS = -L$(LIB_DIR) -lGL -lm -GLUT_LIB_DEPS = -L$(LIB_DIR) -lGLU -lGL -lm -GLW_LIB_DEPS = -L$(LIB_DIR) -lGL -L/usr/openwin/lib -lXt -lX11 -APP_LIB_DEPS = -L$(LIB_DIR) -lX11 -lglut -lGLU -lGL -lm -lCrun +GLU_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -lm +GLUT_LIB_DEPS = -L$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm +GLW_LIB_DEPS = -L$(LIB_DIR) -l$(GL_LIB) -L/usr/openwin/lib -lXt -lX11 +APP_LIB_DEPS = -L$(LIB_DIR) -lX11 -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lCrun diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/configs/ultrix-gcc x11r682/xc/extras/Mesa/configs/ultrix-gcc --- xc/extras/Mesa/configs/ultrix-gcc 2004-06-16 11:16:22.000000000 +0200 +++ xc/extras/Mesa/configs/ultrix-gcc 2004-12-15 02:50:56.000000000 +0100 @@ -18,4 +18,4 @@ GLW_LIB_NAME = libGLw.a OSMESA_LIB_NAME = libOSMesa.a -APP_LIB_DEPS = -L$(LIB_DIR) -lglut -lGLU -lGL -lXmu -lX11 -lXi -lm +APP_LIB_DEPS = -L$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lXmu -lX11 -lXi -lm diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/README.3DFX x11r682/xc/extras/Mesa/docs/README.3DFX --- xc/extras/Mesa/docs/README.3DFX 2004-08-13 01:43:26.000000000 +0200 +++ xc/extras/Mesa/docs/README.3DFX 2004-12-15 02:50:56.000000000 +0100 @@ -3,13 +3,13 @@ -Mesa-6.1 release notes: +Mesa-6.2 release notes: ----------------------- 1) Glide2 support has been ceased; please visit the Glide SourceForge and help us improve Glide3. 2) The current release is a WIP; among other things, the Linux build works - only to some extent. Voodoo Rush not fully supported. Any help will be + only to some extent. Voodoo Rush not fully tested. Any help will be appreciated. 3) Although Mesa is designed to work with any Glide3, it would benefit from interacting with newer Glide libraries, which can export functions like: @@ -60,10 +60,13 @@ enable driver debug code FX_TRAP_GLIDE enable Glide trace code +FX_PACKEDCOLOR + use packed color in vertex structure FX_TC_NAPALM map GL_COMPRESSED_RGB[A] to FXT1. This will have effect on Napalm only (can coexist with FX_TC_NCC, but has higher priority) FX_TC_NCC + experimental map GL_COMPRESSED_RGB[A] to NCC. This will have effect on any 3dfx HW (can coexist with FX_TC_NAPALM, but has lesser priority) FX_COMPRESS_S3TC_AS_FXT1_HACK @@ -93,7 +96,7 @@ FX_GLIDE_NUM_TMU OS: all - HW: dual-TMU cards (some Voodoo1, Voodoo2, Avenger, Napalm) + HW: dual-TMU cards (Voodoo2, Avenger, Napalm) Desc: force single-TMU Note: (*) Value: "1" @@ -141,6 +144,11 @@ HW: all Desc: verbose to stderr Value: any; special value "r" to redirect stderr to MESA.LOG +MESA_FX_NOSNAP + OS: all + HW: Voodoo1, Rush, Banshee + Desc: do not snap vertices inside Mesa + Note: to be used with Glide3x that snaps vertices itself MESA_FX_POINTCAST OS: all HW: dual-TMU cards (some Voodoo1, Voodoo2, Avenger, Napalm) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/README.BEOS x11r682/xc/extras/Mesa/docs/README.BEOS --- xc/extras/Mesa/docs/README.BEOS 2004-08-28 06:26:59.000000000 +0200 +++ xc/extras/Mesa/docs/README.BEOS 2004-12-15 02:50:56.000000000 +0100 @@ -32,12 +32,22 @@ - gcc version 2.95.3 for BeOS You can find it here: http://www.bebits.com/app/2157 -To build Mesa-powered BeOS libGL.so version, type this at root folder: +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. +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 @@ -50,26 +60,27 @@ To build a DEBUG version, type instead this : -$ DEBUG=1 make beos +$ DEBUG=1 make * Example Programs -Look in the progs/beos/ directory for one or two BGLView demo -programs. They should have been compiled along with the Mesa -library. +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 can be found at +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. -There's is a 3.5 version in src/glut/beos/, too. -The original distribution can be obtained from -http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip +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 are special version of GLUT adapted for the BeOS. I don't +They're special versions of GLUT for the BeOS platform. I don't believe Mark Kilgard's normal GLUT distribution includes BeOS support. @@ -87,8 +98,6 @@ * Work Left To Do -- Switch to SGI GLU implementation.. -- Add to build the BeOS GLUT port. Update it to latest known (3.7 ?) - BDirectWindow single buffering support is not implemented yet. - Color index mode is not implemented yet. - Reading pixels from the front buffer not implemented yet. @@ -99,7 +108,8 @@ * Other contributors to this BeOS port -Marcin Konicki ahwayakchih neoni net +Jake Hamby jhamby anobject com +Marcin Konicki ahwayakchih neoni net Francois Revol revol free fr @@ -121,4 +131,4 @@ ---------------------------------------------------------------------- -$Id: README.BEOS,v 1.10 2004/08/14 15:23:51 brianp Exp $ +$Id: README.BEOS,v 1.11 2004/08/24 08:31:57 phoudoin Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/README.WIN32 x11r682/xc/extras/Mesa/docs/README.WIN32 --- xc/extras/Mesa/docs/README.WIN32 2004-08-13 01:43:27.000000000 +0200 +++ xc/extras/Mesa/docs/README.WIN32 2004-12-15 02:50:56.000000000 +0100 @@ -1,6 +1,6 @@ File: docs/README.WIN32 -Last updated: Sep 18, 2003 - Karl Schultz - kschultz@users.sourceforge.net +Last updated: Oct 01, 2004 - Karl Schultz - kschultz@users.sourceforge.net Quick Start @@ -14,16 +14,36 @@ workspaces and projects. Makefiles are no longer shipped or supported, but can be generated from the projects using Visual Studio. +The workspace and project files were created with Visual Studio 6, so that +they can be used with VS6 and so that they can also be imported into VS 7. + Details and Notes - To build the Mesa libraries, open the Mesa.dsw workspace file - in the top directory. You can build each project one-by-one, - or build the glut project to build everything except osmesa, - which needs to be built separately. The build process will - create a lib directory in the top directory and will put the - following files there: - OPENGL32.LIB, GLU32.LIB, GLUT32.LIB, OSMESA32.LIB - OPENGL32.DLL, GLU32.DLL, GLUT32.DLL, OSMESA32.DLL + in the top directory. You will need to build at least one + driver. Currently, only the gdi and osmesa drivers are available. + Select one or the other as the active project and build it. + If you want glu, select the glu project as active and build that as well. + +- Glut is no longer in the Mesa.dsw workspace. It is now built in + the demo workspace (see below). + +- The build process will create a lib directory in the top directory + and will put the following files there as you build them: + OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB + OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL + +- Some users have reported problems building glu with VS7 after importing + and converting the VS6 project files. The problem is caused by a custom + build step that was put in place to work around a problem with VS6 not + recognizing .cc files as C++ source files. It appears that VS7 can be + configured to recognize .cc files as C++ files and so it compiles these + glu files with the default settings, and does not use settings that are + required to compile the files correctly. The easiest way to solve the + problem is to remove the .cc files from the glu project. This does not + delete the files, but removes them from the project so that VS does not + try to compile them at all. This allows the custom build step to compile + the files with the proper settings. - After building, you can copy the above DLL files to a place in your PATH such as $SystemRoot/SYSTEM32. If you don't like putting things in a @@ -51,9 +71,6 @@ - The si-glu sources are used to build the GLU libs. This was done mainly to get the better tessellator code. -- The osmesa driver builds and should work on Windows as well as - any other platform. - - The Windows driver (in src/Windows) builds and runs at least at a minimal level. I modified this driver to work with the new Mesa 4.0 code and driver architecture, but I did not do a great diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/RELNOTES-6.2 x11r682/xc/extras/Mesa/docs/RELNOTES-6.2 --- xc/extras/Mesa/docs/RELNOTES-6.2 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/docs/RELNOTES-6.2 2004-12-15 02:50:56.000000000 +0100 @@ -0,0 +1,49 @@ + + Mesa 6.2 release notes + + October 2, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.1) designate new developmental releases. +Even numbered versions (such as 6.2) designate stable releases. + + +This release primarily just fixes bugs found in the Mesa 6.1 release. +See the VERSIONS file for details. + + + +Known Issues +------------ + +The GL_EXT_pixel_buffer_object extension isn't fully implemented for +functions like glPolygonStipple, glConvolutionFilter, glColorTable, +etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, +and glBitmap work with PBOs. + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- +$Id: RELNOTES-6.2,v 3.3 2004/10/02 14:59:29 brianp Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/RELNOTES-6.2.1 x11r682/xc/extras/Mesa/docs/RELNOTES-6.2.1 --- xc/extras/Mesa/docs/RELNOTES-6.2.1 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/docs/RELNOTES-6.2.1 2004-12-15 02:50:56.000000000 +0100 @@ -0,0 +1,50 @@ + + Mesa 6.2.1 release notes + + December 9, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.1) designate new developmental releases. +Even numbered versions (such as 6.2.x) designate stable releases. + + +This release primarily just fixes bugs found in the Mesa 6.2 release. +See the VERSIONS file for details. + + + +Known Issues +------------ + +The GL_EXT_pixel_buffer_object extension isn't fully implemented for +functions like glPolygonStipple, glConvolutionFilter, glColorTable, +etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, +and glBitmap work with PBOs. This has been fixed for Mesa 6.3. + + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- +$Id: RELNOTES-6.2.1,v 1.1.2.2 2004/12/09 23:09:19 brianp Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/VERSIONS x11r682/xc/extras/Mesa/docs/VERSIONS --- xc/extras/Mesa/docs/VERSIONS 2004-08-28 06:27:00.000000000 +0200 +++ xc/extras/Mesa/docs/VERSIONS 2004-12-15 02:50:56.000000000 +0100 @@ -1274,3 +1274,41 @@ - vertex program state references were broken - fixed triangle color interpolation bug on AIX (Shane Blackett) - fixed a number of minor memory leaks (bug #1002030) + + +6.2 October 2, 2004 + New: + - enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle) + - updated Doxygen support (Jose Fonseca) + Changes: + - some GGI driver updates (Christoph Egger, bug 1025977) + Bug fixes: + - Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features + - fixed a few compilation issues on IRIX + - fixed a matrix classification bug (reported by Wes Bethel) + - we weren't reseting the vertex/fragment program error state + before parsing (Dave Reveman) + - adjust texcoords for sampling texture rectangles (Dave Reveman) + - glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented + - repeated calls to glDeleteTexture(t) could lead to a crash + - fixed potential ref count bugs in VBOs and vertex/fragment programs + - spriteblast demo didn't handle window size changes correctly + - glTexSubImage didn't handle pixels=NULL correctly for PBOs + - fixed color index mode glDrawPixels bug (Karl Schultz) + + +6.2.1 December 9, 2004 + Bug fixes: + - don't apply regular fog or color sum when using a fragment program + - glProgramEnvParameter4fARB always generated an error on + GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645) + - glVertexAttrib3svNV and glVertexAttrib3svARB were broken + - fixed width/height mix-up in glSeparableFilter2D() + - fixed regression in glCopyPixels + convolution + - glReadPixels from a clipped front color buffer didn't always work + - glTexImage didn't accept GL_RED/GREEN/BLUE as the format + - Attempting queries/accesses of VBO 0 weren't detected as errors + - paletted textures failed if the palette had fewer that 256 entries + Changes: + - fixed a bunch of compiler warnings found with gcc 3.4 + - bug reports should to go bugzilla.freedesktop.org diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/bugs.html x11r682/xc/extras/Mesa/docs/bugs.html --- xc/extras/Mesa/docs/bugs.html 2004-08-13 01:43:28.000000000 +0200 +++ xc/extras/Mesa/docs/bugs.html 2004-12-15 02:50:56.000000000 +0100 @@ -7,9 +7,20 @@

Bug Database

-Bug reports can be filed in the Bug -Database on sourceforge.net. Please follow these guidelines: +The Mesa bug database is now hosted on +freedesktop.org +instead of SourceForge. +

+ +

+To file a Mesa bug, go to + +Bugzilla on freedesktop.org +

+ +

+Please follow these bug reporting guidelines:

    @@ -21,7 +32,8 @@

-Bug reports will automatically be forwarded to the Mesa developer's list. +Bug reports will automatically be forwarded to the Mesa developer's mailing +list.

diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/contents.html x11r682/xc/extras/Mesa/docs/contents.html --- xc/extras/Mesa/docs/contents.html 2004-08-13 01:43:28.000000000 +0200 +++ xc/extras/Mesa/docs/contents.html 2004-12-15 02:50:56.000000000 +0100 @@ -20,7 +20,7 @@ Download / Install

    -
  • Stable Release (6.0.1) +
  • Stable Release (6.2)
  • Downloading/Unpacking
  • Compilation/Installation
  • SGI's GLU diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/cvs_branches.html x11r682/xc/extras/Mesa/docs/cvs_branches.html --- xc/extras/Mesa/docs/cvs_branches.html 2004-08-13 01:43:28.000000000 +0200 +++ xc/extras/Mesa/docs/cvs_branches.html 2004-12-15 02:50:56.000000000 +0100 @@ -15,25 +15,25 @@

    -Currently (Nov 2003), the trunk is the Mesa 5.1 development code -while the mesa_5_0_branch branch has the stable Mesa 5.0.x code. +Currently (Oct 2004), the trunk is the Mesa 6.3 development code +while the mesa_6_2_branch branch has the stable Mesa 6.2.x code.

    Mesa releases use an even/odd numbering scheme to represent stable/development releases. -For example, Mesa 5.0.x (0 is considered even) is a stable release while -Mesa 5.1.x is a development release. +For example, Mesa 6.2 (0 is considered even) is a stable release while +Mesa 6.3 is a development release.

    To checkout a specific CVS branch pass -r and the branch tag after your CVS command. -For example cvs checkout -r mesa_5_0_branch Mesa will -checkout the 5.0.x branch and cvs update -r -mesa_5_0_branch will convert your current CVS tree to the 5.0.x +For example cvs checkout -r mesa_6_2_branch Mesa will +checkout the 6.2 branch and cvs update -r +mesa_6_2_branch will convert your current CVS tree to the 6.2 branch. Consult

  • GL_ARB_occlusion_query
  • GL_ARB_vertex_buffer_object -
  • GL_ARB_texture_non_power_of_two
  • GL_EXT_shadow_funcs

diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/libraries.html x11r682/xc/extras/Mesa/docs/libraries.html --- xc/extras/Mesa/docs/libraries.html 2004-08-13 01:43:29.000000000 +0200 +++ xc/extras/Mesa/docs/libraries.html 2004-12-15 02:50:56.000000000 +0100 @@ -36,7 +36,7 @@ - a scene-graph library

  • OpenVRML - a VRML parsing/display library with "lookat" - an example VRML browser -
  • PLIB - A collection of portable games libraries, including an OpenGL GUI and a simple Scene Graph API +
  • PLIB - A collection of portable games libraries, including an OpenGL GUI and a simple Scene Graph API
  • Pryan - an OpenInventor-like toolkit
  • PyOpenGL - OpenGL interface for Python
  • Quesa - QuickDraw3D-compatible library based on OpenGL, Mesa or Direct3D diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/news.html x11r682/xc/extras/Mesa/docs/news.html --- xc/extras/Mesa/docs/news.html 2004-08-13 01:43:30.000000000 +0200 +++ xc/extras/Mesa/docs/news.html 2004-12-15 02:50:56.000000000 +0100 @@ -7,6 +7,128 @@

    News

    +

    December 9, 2004

    +

    +Mesa 6.2.1 has been released. +This is a stable release which just fixes bugs since the 6.2 release. +

    +
    +    Bug fixes:
    +	- don't apply regular fog or color sum when using a fragment program
    +	- glProgramEnvParameter4fARB always generated an error on
    +	  GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
    +	- glVertexAttrib3svNV and glVertexAttrib3svARB were broken
    +	- fixed width/height mix-up in glSeparableFilter2D()
    +	- fixed regression in glCopyPixels + convolution
    +	- glReadPixels from a clipped front color buffer didn't always work
    +	- glTexImage didn't accept GL_RED/GREEN/BLUE as the format
    +	- Attempting queries/accesses of VBO 0 weren't detected as errors
    +	- paletted textures failed if the palette had fewer that 256 entries
    +    Changes:
    +	- fixed a bunch of compiler warnings found with gcc 3.4
    +	- bug reports should to go bugzilla.freedesktop.org
    +
    +

    +The MD5 checksums are: +

    +
    +tbd
    +
    + + +

    October 2, 2004

    +

    +Mesa 6.2 has been released. +This is a stable release which just fixes bugs since the 6.1 release. +

    +
    +    New:
    +	- enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
    +	- updated Doxygen support (Jose Fonseca)
    +    Changes:
    +	- some GGI driver updates (Christoph Egger, bug 1025977)
    +    Bug fixes:
    +	- Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
    +	- fixed a few compilation issues on IRIX
    +	- fixed a matrix classification bug (reported by Wes Bethel)
    +	- we weren't reseting the vertex/fragment program error state
    +	  before parsing (Dave Reveman)
    +	- adjust texcoords for sampling texture rectangles (Dave Reveman)
    +	- glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
    +	- repeated calls to glDeleteTexture(t) could lead to a crash
    +	- fixed potential ref count bugs in VBOs and vertex/fragment programs
    +	- spriteblast demo didn't handle window size changes correctly
    +	- glTexSubImage didn't handle pixels=NULL correctly for PBOs
    +	- fixed color index mode glDrawPixels bug (Karl Schultz)
    +
    +

    +The MD5 checksums are: +

    +
    +9e8f34b059272dbb8e1f2c968b33bbf0  MesaLib-6.2.tar.gz
    +3d6a6362390b6a37d3cb2e615f3ac7db  MesaLib-6.2.tar.bz2
    +6cfd7895d28e695c0dbbed9469564091  MesaLib-6.2.zip
    +3e06e33b0809f09855cb60883b8bdfef  MesaDemos-6.2.tar.gz
    +9d160009c3dfdb35fe7e4088c9ba8f85  MesaDemos-6.2.tar.bz2
    +856f7ec947122eb3c8985ebc2f654dcd  MesaDemos-6.2.zip
    +
    + + +

    August 18, 2004

    +

    +Mesa 6.1 has been released. +This is a new development release (version 6.2 will be a stabilization +release). +

    +
    +    New:
    +	- Revamped Makefile system
    +	- glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
    +	- internal driver interface changes related to texture object
    +	  allocation, vertex/fragment programs, BlendEquationSeparate, etc.
    +	- option to walk triangle edges with double-precision floats
    +	  (Justin Novosad of Discreet) (see config.h file)
    +	- support for AUX buffers in software GLX driver
    +	- updated glext.h to version 24 and glxext.h to version 6
    +	- new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
    +	- updated BeOS support (Philippe Houdoin)
    +    Changes:
    +	- fragment fog interpolation is perspective corrected now
    +	- new glTexImage code, much cleaner, may be a bit faster
    +    Bug fixes:
    +	- glArrayElement in display lists didn't handle generic vertex attribs
    +	- glFogCoord didn't always work properly
    +	- ARB_fragment_program fog options didn't work
    +	- frag prog TEX instruction no longer incorrectly divides s,t,r by q
    +	- ARB frag prog TEX and TEXP instructions now use LOD=0
    +	- glTexEnviv in display lists didn't work
    +	- glRasterPos didn't do texgen or apply texture matrix
    +	- GL_DOUBLE-valued vertex arrays were broken in some cases
    +	- fixed texture rectangle edge/border sampling bugs
    +	- sampling an incomplete texture in a fragment program would segfault
    +	- glTexImage was missing a few error checks
    +	- fixed some minor glGetTexParameter glitches
    +	- GL_INTENSITY was mistakenly accepted as a  to glTexImage
    +	- fragment program writes to RC/HC register were broken
    +	- fixed a few glitches in GL_HP_occlusion_test extension
    +	- glBeginQueryARB and glEndQueryARB didn't work inside display lists
    +	- vertex program state references were broken
    +	- fixed triangle color interpolation bug on AIX (Shane Blackett)
    +	- fixed a number of minor memory leaks (bug #1002030)
    +
    +The MD5 checksums are: +

    +
    +c9284d295ebcd2e0486cc3cd54e5863c  MesaLib-6.1.tar.gz
    +5de1f53ec0709f60fc68fdfed57351f3  MesaLib-6.1.tar.bz2
    +483e77cac4789a5d36c42f3c0136d6d8  MesaLib-6.1.zip
    +8c46cfa6f9732acc6f6c25724aad0246  MesaDemos-6.1.tar.gz
    +89bfe0f6c69b39fd0ebd9fff481a4e9b  MesaDemos-6.1.tar.bz2
    +161268531fcc6f0c5a056430ee97e0c1  MesaDemos-6.1.zip
    +
    + + +

    April 2, 2004

    @@ -831,6 +953,6 @@


    -$Id: news.html,v 3.13 2004/04/02 23:37:02 brianp Exp $ +$Id: news.html,v 3.15.2.3 2004/12/09 23:09:20 brianp Exp $ \ No newline at end of file diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/osmesa.html x11r682/xc/extras/Mesa/docs/osmesa.html --- xc/extras/Mesa/docs/osmesa.html 2004-08-13 01:43:30.000000000 +0200 +++ xc/extras/Mesa/docs/osmesa.html 2004-12-15 02:50:56.000000000 +0100 @@ -43,16 +43,14 @@

    To build Mesa/OSMesa with 16-bit color channels:

    -      cd Mesa-5.x/src
    -      make -f Makefile.X11 clean
    -      make -f Makefile.OSMesa16 linux-osmesa16
    +      make realclean
    +      make linux-osmesa16
     
    For 32-bit channels:
    -      cd Mesa-5.x/src
    -      make -f Makefile.X11 clean
    -      make -f Makefile.OSMesa16 linux-osmesa32
    +      make realclean
    +      make linux-osmesa32
     

    @@ -60,13 +58,12 @@

    -If you're not using Linux, you can easily edit Make-config and add -an appropriate configuration. -

    -

    -The Mesa/tests/osdemo16.c file (available via CVS) demonstrates how -to use this feature. +If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16 +to a new config file and edit it as needed. Then, add the new config name to +the top-level Makefile. Send a patch to the Mesa developers too, if you're +inclined.

    +

    BE WARNED: 16 and 32-bit channel support has not been exhaustively tested and there may be some bugs. However, a number of people have diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/docs/relnotes.html x11r682/xc/extras/Mesa/docs/relnotes.html --- xc/extras/Mesa/docs/relnotes.html 2004-08-13 01:43:30.000000000 +0200 +++ xc/extras/Mesa/docs/relnotes.html 2004-12-15 02:50:56.000000000 +0100 @@ -11,6 +11,8 @@

      +
    • RELNOTES-6.2.1 +
    • RELNOTES-6.2
    • RELNOTES-6.1
    • RELNOTES-6.0
    • RELNOTES-5.1 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/gl.h x11r682/xc/extras/Mesa/include/GL/gl.h --- xc/extras/Mesa/include/GL/gl.h 2004-06-21 15:35:05.000000000 +0200 +++ xc/extras/Mesa/include/GL/gl.h 2004-12-15 02:50:56.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/gl_mangle.h x11r682/xc/extras/Mesa/include/GL/gl_mangle.h --- xc/extras/Mesa/include/GL/gl_mangle.h 2004-06-16 11:16:30.000000000 +0200 +++ xc/extras/Mesa/include/GL/gl_mangle.h 2004-12-15 02:50:56.000000000 +0100 @@ -30,6 +30,7 @@ /* Internal symbols which may collide with other OpenGL implementations. */ #define __glCoreCreateContext __mglCoreCreateContext #define __glCoreNopDispatch __mglCoreNopDispatch +#define gl__unused413 MANGLE(__unused413) /*REGENERATE_TO_END-----------ALL LINES BELOW HERE GET REPLACED ON REGENERATION */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/glut.h x11r682/xc/extras/Mesa/include/GL/glut.h --- xc/extras/Mesa/include/GL/glut.h 2004-06-16 11:16:32.000000000 +0200 +++ xc/extras/Mesa/include/GL/glut.h 2004-12-15 02:50:56.000000000 +0100 @@ -75,7 +75,7 @@ To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ /* XXX This is from Win32's */ -# if !defined(_MSC_VER) && !defined(__cdecl) +# if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(__cdecl) /* Define __cdecl for non-Microsoft compilers. */ # define __cdecl # define GLUT_DEFINED___CDECL @@ -108,7 +108,7 @@ and redifinition of Windows system defs, also removes requirement of pretty much any standard windows header from this file */ -#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__) +#if (_MSC_VER >= 800) || defined(__MINGW32__) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__) # define GLUTAPIENTRY __stdcall #else # define GLUTAPIENTRY @@ -664,7 +664,8 @@ GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type); #endif #if (GLUT_API_VERSION >= 5) -GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName); +typedef void (*GLUTproc)(); +GLUTAPI GLUTproc GLUTAPIENTRY glutGetProcAddress(const char *procName); #endif /* GLUT font sub-API */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/glx.h x11r682/xc/extras/Mesa/include/GL/glx.h --- xc/extras/Mesa/include/GL/glx.h 2004-06-16 11:16:33.000000000 +0200 +++ xc/extras/Mesa/include/GL/glx.h 2004-12-15 02:50:56.000000000 +0100 @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * 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"), @@ -46,7 +46,7 @@ #if defined(USE_MGL_NAMESPACE) -#include +#include "glx_mangle.h" #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/internal/dri_interface.h x11r682/xc/extras/Mesa/include/GL/internal/dri_interface.h --- xc/extras/Mesa/include/GL/internal/dri_interface.h 2004-07-22 08:49:46.000000000 +0200 +++ xc/extras/Mesa/include/GL/internal/dri_interface.h 2004-12-15 02:50:57.000000000 +0100 @@ -149,6 +149,8 @@ int * backX, int * backY, int * numBackClipRects, drm_clip_rect_t ** pBackClipRects ); +/* Test for the xf86dri.h header file */ +#ifndef _XF86DRI_H_ extern GLboolean XF86DRIDestroyContext( __DRInativeDisplay *dpy, int screen, __DRIid context_id ); @@ -157,6 +159,7 @@ extern GLboolean XF86DRIDestroyDrawable( __DRInativeDisplay *dpy, int screen, __DRIid drawable); +#endif /*@}*/ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/include/GL/wmesa.h x11r682/xc/extras/Mesa/include/GL/wmesa.h --- xc/extras/Mesa/include/GL/wmesa.h 2004-06-16 11:16:34.000000000 +0200 +++ xc/extras/Mesa/include/GL/wmesa.h 2004-12-15 02:50:56.000000000 +0100 @@ -52,15 +52,17 @@ #include "gl\gl.h" -#pragma warning (disable:4273) -#pragma warning( disable : 4244 ) /* '=' : conversion from 'const double ' to 'float ', possible loss of data */ -#pragma warning( disable : 4018 ) /* '<' : signed/unsigned mismatch */ -#pragma warning( disable : 4305 ) /* '=' : truncation from 'const double ' to 'float ' */ -#pragma warning( disable : 4013 ) /* 'function' undefined; assuming extern returning int */ -#pragma warning( disable : 4761 ) /* integral size mismatch in argument; conversion supplied */ -#pragma warning( disable : 4273 ) /* 'identifier' : inconsistent DLL linkage. dllexport assumed */ -#if (MESA_WARNQUIET>1) -# pragma warning( disable : 4146 ) /* unary minus operator applied to unsigned type, result still unsigned */ +#if defined(_MSV_VER) && !defined(__GNUC__) +# pragma warning (disable:4273) +# pragma warning( disable : 4244 ) /* '=' : conversion from 'const double ' to 'float ', possible loss of data */ +# pragma warning( disable : 4018 ) /* '<' : signed/unsigned mismatch */ +# pragma warning( disable : 4305 ) /* '=' : truncation from 'const double ' to 'float ' */ +# pragma warning( disable : 4013 ) /* 'function' undefined; assuming extern returning int */ +# pragma warning( disable : 4761 ) /* integral size mismatch in argument; conversion supplied */ +# pragma warning( disable : 4273 ) /* 'identifier' : inconsistent DLL linkage. dllexport assumed */ +# if (MESA_WARNQUIET>1) +# pragma warning( disable : 4146 ) /* unary minus operator applied to unsigned type, result still unsigned */ +# endif #endif /* diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/Makefile x11r682/xc/extras/Mesa/src/Makefile --- xc/extras/Mesa/src/Makefile 2004-06-16 11:17:09.000000000 +0200 +++ xc/extras/Mesa/src/Makefile 2004-12-15 02:50:57.000000000 +0100 @@ -7,7 +7,11 @@ SUBDIRS = $(SRC_DIRS) -default: $(LIB_DIR) subdirs +default: message $(LIB_DIR) subdirs + + +message: + @echo "Making sources for" $(CONFIG_NAME) subdirs: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/glx/mini/Makefile x11r682/xc/extras/Mesa/src/glx/mini/Makefile --- xc/extras/Mesa/src/glx/mini/Makefile 2004-07-22 08:51:13.000000000 +0200 +++ xc/extras/Mesa/src/glx/mini/Makefile 2004-12-15 02:50:57.000000000 +0100 @@ -18,7 +18,10 @@ miniglx.c \ miniglx_events.c -OBJECTS = $(C_SOURCES:.c=.o) +X86_SOURCES = $(TOP)/src/mesa/x86/glapi_x86.S + +OBJECTS = $(C_SOURCES:.c=.o) \ + $(ASM_SOURCES:.S=.o) INCLUDES = -I. $(INCLUDE_DIRS) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/glx/mini/miniglx.c x11r682/xc/extras/Mesa/src/glx/mini/miniglx.c --- xc/extras/Mesa/src/glx/mini/miniglx.c 2004-08-13 01:04:47.000000000 +0200 +++ xc/extras/Mesa/src/glx/mini/miniglx.c 2004-12-15 02:50:57.000000000 +0100 @@ -1711,7 +1711,7 @@ GLint redBits = 0, greenBits = 0, blueBits = 0, alphaBits = 0; GLint indexBits = 0, depthBits = 0, stencilBits = 0; GLint numSamples = 0; - int i; + int i=0; /* * XXX in the future, might be interpreted as a VT @@ -1805,6 +1805,7 @@ (void) alphaBits; (void) stereoFlag; for ( mode = dpy->driver_modes ; mode != NULL ; mode = mode->next ) { + i++; if (mode->rgbMode == rgbFlag && mode->doubleBufferMode == dbFlag && mode->redBits >= redBits && @@ -2149,7 +2150,8 @@ { GLXDrawable drawable = (GLXDrawable) draw; drm_clip_rect_t * cliprect; - + Display* display = (Display*)dpy; + __DRIcontextPrivate *pcp = (__DRIcontextPrivate *)CurrentContext->driContext.private; if (drawable == 0) { return GL_FALSE; } @@ -2159,15 +2161,20 @@ cliprect->y1 = drawable->y; cliprect->x2 = drawable->x + drawable->w; cliprect->y2 = drawable->y + drawable->h; + + /* the drawable index is by client id */ + *index = display->clientID; + *stamp = pcp->driScreenPriv->pSAREA->drawableTable[display->clientID].stamp; *x = drawable->x; *y = drawable->y; *width = drawable->w; *height = drawable->h; *numClipRects = 1; *pClipRects = cliprect; - *backX = 0; - *backY = 0; + + *backX = drawable->x; + *backY = drawable->y; *numBackClipRects = 0; *pBackClipRects = 0; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/Makefile x11r682/xc/extras/Mesa/src/mesa/Makefile --- xc/extras/Mesa/src/mesa/Makefile 2004-08-28 06:27:07.000000000 +0200 +++ xc/extras/Mesa/src/mesa/Makefile 2004-12-15 02:50:57.000000000 +0100 @@ -176,7 +176,7 @@ clean: -rm -f */*.o - -rm -f depend mesa.a + -rm -f depend depend.bak mesa.a -rm -f drivers/*/*.o (cd drivers/dri ; $(MAKE) clean) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/Makefile.BeOS x11r682/xc/extras/Mesa/src/mesa/Makefile.BeOS --- xc/extras/Mesa/src/mesa/Makefile.BeOS 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/Makefile.BeOS 2004-12-15 02:50:57.000000000 +0100 @@ -0,0 +1,303 @@ +# Mesa 3-D graphics library +# Version: 5.1 +# +# Copyright (C) 1995-2003 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. +# +# BeOS driver makefile v1.0 for Mesa 5.1.x +# +# Copyright (C) 2002-2003 - Philippe Houdoin +# Email : philippe.houdoin@free.fr +# Web : http://philippe.houdoin.free.fr/phil/beos/index-en.html +# +# ------------------------------------------------------------------- + +## BeOS Generic Makefile v2.0 ## + +## Fill in this file to specify the project being created, and the referenced +## makefile-engine will do all of the hard work for you. This handles both +## Intel and PowerPC builds of the BeOS. + +## Application Specific Settings --------------------------------------------- + +# specify the name of the binary +NAME= libGL.so + +# specify the type of binary +# APP: Application +# SHARED: Shared library or add-on +# STATIC: Static library archive +# DRIVER: Kernel Driver +TYPE= SHARED + +# specify the source files to use +# full paths or paths relative to the makefile can be included +# all files, regardless of directory, will have their object +# files created in the common object directory. +# Note that this means this makefile will not work correctly +# if two source files with the same name (source.c or source.cpp) +# are included from different directories. Also note that spaces +# in folder names do not work well with this makefile. + + +include sources + + +BEOS_DRIVER_SOURCES = \ + drivers/beos/GLView.cpp + +MESA_DEFINES = +ASM_SOURCES = + +# To use GAS assembler, uncomment this line instead: +MESA_DEFINES += GNU_ASSEMBLER +# To use NASM assembler, uncomment this line instead: +# MESA_DEFINES += NASM_ASSEMBLER +# To build a DEBUG version of Mesa, uncomment this line instead: +# MESA_DEFINES += DEBUG + +# x86-optimized code +MACHINE=$(shell uname -m) +ifeq ($(MACHINE), BePC) + MESA_DEFINES += USE_X86_ASM USE_SSE_ASM USE_MMX_ASM + MESA_DEFINES += USE_3DNOW_ASM + ASM_SOURCES = $(X86_SOURCES) +else + # No assembly optimization for PowerPC... + # HAVE_ALTIVEC=1 +endif + +# FIXME: SI-GLU version support currently broken +# USE_SI_GLU=1 +ifdef USE_SI_GLU + GLU_SOURCES = \ + ../si-glu/libutil/error.c \ + ../si-glu/libutil/glue.c \ + ../si-glu/libutil/mipmap.c \ + ../si-glu/libutil/project.c \ + ../si-glu/libutil/quad.c \ + ../si-glu/libutil/registry.c \ + ../si-glu/libtess/dict.c \ + ../si-glu/libtess/geom.c \ + ../si-glu/libtess/memalloc.c \ + ../si-glu/libtess/mesh.c \ + ../si-glu/libtess/normal.c \ + ../si-glu/libtess/priorityq.c \ + ../si-glu/libtess/render.c \ + ../si-glu/libtess/sweep.c \ + ../si-glu/libtess/tess.c \ + ../si-glu/libtess/tessmono.c \ + ../si-glu/libnurbs/interface/bezierEval.cc \ + ../si-glu/libnurbs/interface/bezierPatch.cc \ + ../si-glu/libnurbs/interface/bezierPatchMesh.cc \ + ../si-glu/libnurbs/interface/glcurveval.cc \ + ../si-glu/libnurbs/interface/glinterface.cc \ + ../si-glu/libnurbs/interface/glrenderer.cc \ + ../si-glu/libnurbs/interface/glsurfeval.cc \ + ../si-glu/libnurbs/interface/incurveeval.cc \ + ../si-glu/libnurbs/interface/insurfeval.cc \ + ../si-glu/libnurbs/internals/arc.cc \ + ../si-glu/libnurbs/internals/arcsorter.cc \ + ../si-glu/libnurbs/internals/arctess.cc \ + ../si-glu/libnurbs/internals/backend.cc \ + ../si-glu/libnurbs/internals/basiccrveval.cc \ + ../si-glu/libnurbs/internals/basicsurfeval.cc \ + ../si-glu/libnurbs/internals/bin.cc \ + ../si-glu/libnurbs/internals/bufpool.cc \ + ../si-glu/libnurbs/internals/cachingeval.cc \ + ../si-glu/libnurbs/internals/ccw.cc \ + ../si-glu/libnurbs/internals/coveandtiler.cc \ + ../si-glu/libnurbs/internals/curve.cc \ + ../si-glu/libnurbs/internals/curvelist.cc \ + ../si-glu/libnurbs/internals/curvesub.cc \ + ../si-glu/libnurbs/internals/dataTransform.cc \ + ../si-glu/libnurbs/internals/displaylist.cc \ + ../si-glu/libnurbs/internals/flist.cc \ + ../si-glu/libnurbs/internals/flistsorter.cc \ + ../si-glu/libnurbs/internals/hull.cc \ + ../si-glu/libnurbs/internals/intersect.cc \ + ../si-glu/libnurbs/internals/knotvector.cc \ + ../si-glu/libnurbs/internals/mapdesc.cc \ + ../si-glu/libnurbs/internals/mapdescv.cc \ + ../si-glu/libnurbs/internals/maplist.cc \ + ../si-glu/libnurbs/internals/mesher.cc \ + ../si-glu/libnurbs/internals/monoTriangulationBackend.cc \ + ../si-glu/libnurbs/internals/monotonizer.cc \ + ../si-glu/libnurbs/internals/mycode.cc \ + ../si-glu/libnurbs/internals/nurbsinterfac.cc \ + ../si-glu/libnurbs/internals/nurbstess.cc \ + ../si-glu/libnurbs/internals/patch.cc \ + ../si-glu/libnurbs/internals/patchlist.cc \ + ../si-glu/libnurbs/internals/quilt.cc \ + ../si-glu/libnurbs/internals/reader.cc \ + ../si-glu/libnurbs/internals/renderhints.cc \ + ../si-glu/libnurbs/internals/slicer.cc \ + ../si-glu/libnurbs/internals/sorter.cc \ + ../si-glu/libnurbs/internals/splitarcs.cc \ + ../si-glu/libnurbs/internals/subdivider.cc \ + ../si-glu/libnurbs/internals/tobezier.cc \ + ../si-glu/libnurbs/internals/trimline.cc \ + ../si-glu/libnurbs/internals/trimregion.cc \ + ../si-glu/libnurbs/internals/trimvertpool.cc \ + ../si-glu/libnurbs/internals/uarray.cc \ + ../si-glu/libnurbs/internals/varray.cc \ + ../si-glu/libnurbs/nurbtess/directedLine.cc \ + ../si-glu/libnurbs/nurbtess/gridWrap.cc \ + ../si-glu/libnurbs/nurbtess/monoChain.cc \ + ../si-glu/libnurbs/nurbtess/monoPolyPart.cc \ + ../si-glu/libnurbs/nurbtess/monoTriangulation.cc \ + ../si-glu/libnurbs/nurbtess/partitionX.cc \ + ../si-glu/libnurbs/nurbtess/partitionY.cc \ + ../si-glu/libnurbs/nurbtess/polyDBG.cc \ + ../si-glu/libnurbs/nurbtess/polyUtil.cc \ + ../si-glu/libnurbs/nurbtess/primitiveStream.cc \ + ../si-glu/libnurbs/nurbtess/quicksort.cc \ + ../si-glu/libnurbs/nurbtess/rectBlock.cc \ + ../si-glu/libnurbs/nurbtess/sampleComp.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompBot.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompRight.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompTop.cc \ + ../si-glu/libnurbs/nurbtess/sampleMonoPoly.cc \ + ../si-glu/libnurbs/nurbtess/sampledLine.cc \ + ../si-glu/libnurbs/nurbtess/searchTree.cc +else + GLU_SOURCES = \ + ../glu/mesa/glu.c \ + ../glu/mesa/mipmap.c \ + ../glu/mesa/project.c \ + ../glu/mesa/quadric.c \ + ../glu/mesa/tess.c \ + ../glu/mesa/tesselat.c \ + ../glu/mesa/polytest.c \ + ../glu/mesa/nurbs.c \ + ../glu/mesa/nurbscrv.c \ + ../glu/mesa/nurbssrf.c \ + ../glu/mesa/nurbsutl.c +endif + +MESA_SOURCES = $(CORE_SOURCES) $(ASM_SOURCES) + +SRCS = $(MESA_SOURCES) $(GLU_SOURCES) $(BEOS_DRIVER_SOURCES) + +# specify the resource files to use +# full path or a relative path to the resource file can be used. +RSRCS = + +# specify additional libraries to link against +# there are two acceptable forms of library specifications +# - if your library follows the naming pattern of: +# libXXX.so or libXXX.a you can simply specify XXX +# library: libbe.so entry: be +# +# - if your library does not follow the standard library +# naming scheme you need to specify the path to the library +# and it's name +# library: my_lib.a entry: my_lib.a or path/my_lib.a +LIBS = be + +# specify additional paths to directories following the standard +# libXXX.so or libXXX.a naming scheme. You can specify full paths +# or paths relative to the makefile. The paths included may not +# be recursive, so include all of the paths where libraries can +# be found. Directories where source files are found are +# automatically included. +LIBPATHS = + +# additional paths to look for system headers +# thes use the form: #include
      +# source file directories are NOT auto-included here +SYSTEM_INCLUDE_PATHS = ../../include + +ifdef USE_SI_GLU + SYSTEM_INCLUDE_PATHS += ../glu/sgi/include +endif + +# additional paths to look for local headers +# thes use the form: #include "header" +# source file directories are automatically included +LOCAL_INCLUDE_PATHS = \ + . \ + ./main \ + ./glapi \ + ./math \ + ./transform \ + ./swrast \ + ./swrast_setup \ + ./tnl \ + ./tnl_dd + +# specify the level of optimization that you desire +# NONE, SOME, FULL +OPTIMIZE = FULL + +# specify any preprocessor symbols to be defined. The symbols +# will be set to a value of 1. For example specify DEBUG if you want +# DEBUG=1 to be set when compiling. +DEFINES = $(MESA_DEFINES) + +# specify special warning levels +# if unspecified default warnings will be used +# NONE = suppress all warnings +# ALL = enable all warnings +WARNINGS = ALL + +# specify whether image symbols will be created +# so that stack crawls in the debugger are meaningful +# if TRUE symbols will be created +SYMBOLS = TRUE + +# specify debug settings +# if TRUE will allow application to be run from +# a source-level debugger +# DEBUGGER = TRUE +DEBUGGER = FALSE + +# specify additional compiler flags for all files +COMPILER_FLAGS = + +# specify additional linker flags +LINKER_FLAGS = + + + +## include the makefile-engine +include /boot/develop/etc/makefile-engine + + + +# x86/matypes.h include file is *generated*! +# Rules to (re)generate it as needed: + +x86/common_x86_asm.S : x86/matypes.h + +x86/matypes.h : x86/gen_matypes.c + @echo "(Re-)Generating $@ ..." + $(CC) $< $(INCLUDES) $(CFLAGS) -o x86/gen_matypes + x86/gen_matypes > $@ + rm -f x86/gen_matypes + +## Add NASM support for assembly code compilation... +# $(OBJ_DIR)/%.o : %.nasm +# nasm -f elf $(MESA_DEFINES) -o $@ $< + +$(OBJ_DIR)/%.o : %.S + gcc -c $< $(INCLUDES) $(CFLAGS) -o $@ +# gcc $(INCLUDES) $(CFLAGS) -E $< | grep -v '^$$' > $(addsuffix .nasm, $(basename $<)) +# nasm -f elf $(MESA_DEFINES) -o $@ $(addsuffix .nasm, $(basename $<)) + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/Makefile.mgw x11r682/xc/extras/Mesa/src/mesa/Makefile.mgw --- xc/extras/Mesa/src/mesa/Makefile.mgw 2004-07-22 08:51:14.000000000 +0200 +++ xc/extras/Mesa/src/mesa/Makefile.mgw 2004-12-15 02:50:57.000000000 +0100 @@ -40,6 +40,9 @@ # 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 # @@ -57,8 +60,13 @@ TOP = ../.. GLIDE ?= $(TOP)/glide3 LIBDIR = $(TOP)/lib -GL_DLL = opengl32.dll -GL_IMP = libopengl32.a +ifeq ($(ICD),1) + GL_DLL = mesa32.dll + GL_IMP = libmesa32.a +else + GL_DLL = opengl32.dll + GL_IMP = libopengl32.a +endif LDLIBS = -lgdi32 @@ -66,12 +74,17 @@ CFLAGS += -DBUILD_GL32 -D_OPENGL32_ -D_MSC_VER CFLAGS += $(INCLUDE_DIRS) ifeq ($(FX),1) -CFLAGS += -I$(GLIDE)/include -DFX -LDLIBS += -L$(GLIDE)/lib -lglide3x -GL_DEF = drivers/glide/fxopengl.def -GL_RES = drivers/glide/fx.rc + CFLAGS += -I$(GLIDE)/include -DFX + LDLIBS += -L$(GLIDE)/lib -lglide3x + GL_DEF = drivers/glide/fxopengl.def + GL_RES = drivers/glide/fx.rc else -GL_DEF = drivers/windows/gdi/mesa.def + ifeq ($(ICD),1) + CFLAGS += -DUSE_MGL_NAMESPACE + GL_DEF = drivers/windows/icd/mesa.def + else + GL_DEF = drivers/windows/gdi/mesa.def + endif endif AR = ar @@ -100,10 +113,16 @@ $(GLIDE_DRIVER_SOURCES) \ drivers/glide/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 = $(CORE_SOURCES) $(X86_SOURCES) $(COMMON_DRIVER_SOURCES) $(DRIVER_SOURCES) @@ -138,10 +157,18 @@ # [dBorca] # glapi_x86.S needs some adjustments # in order to generate correct entrypoints +# Trick: change the following condition to +# be always false if you need C entrypoints +# with USE_X86_ASM (useful for trace/debug) +ifeq (1,1) x86/glapi_x86.o: x86/glapi_x86.S $(CC) -o $@ $(CFLAGS) -U__WIN32__ -DSTDCALL_API -c $< -#main/dispatch.o: main/dispatch.c -# $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $< +else +main/dispatch.o: main/dispatch.c + $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $< +glapi/glapi.o: glapi/glapi.c + $(CC) -o $@ $(CFLAGS) -UUSE_X86_ASM -c $< +endif # [dBorca] # if we want codegen, we have to stdcall @@ -161,5 +188,6 @@ -$(call UNLINK,x86/*.o) -$(call UNLINK,drivers/common/*.o) -$(call UNLINK,drivers/windows/gdi/*.o) + -$(call UNLINK,drivers/windows/icd/*.o) -$(call UNLINK,drivers/glide/*.o) -$(call UNLINK,drivers/glide/*.res) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/array_cache/ac_import.c x11r682/xc/extras/Mesa/src/mesa/array_cache/ac_import.c --- xc/extras/Mesa/src/mesa/array_cache/ac_import.c 2004-07-22 08:51:21.000000000 +0200 +++ xc/extras/Mesa/src/mesa/array_cache/ac_import.c 2004-12-15 02:50:57.000000000 +0100 @@ -276,6 +276,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.TexCoord[unit]; struct gl_client_array *to = &ac->Cache.TexCoord[unit]; + (void) type; (void) stride; ASSERT(unit < ctx->Const.MaxTextureCoordUnits); @@ -305,6 +306,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.Vertex; struct gl_client_array *to = &ac->Cache.Vertex; + (void) type; (void) stride; /* Limited choices at this stage: */ @@ -331,6 +333,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.Normal; struct gl_client_array *to = &ac->Cache.Normal; + (void) type; (void) stride; /* Limited choices at this stage: */ @@ -355,6 +358,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.Color; struct gl_client_array *to = &ac->Cache.Color; + (void) stride; import( ctx, type, to, from ); @@ -367,6 +371,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.Index; struct gl_client_array *to = &ac->Cache.Index; + (void) type; (void) stride; /* Limited choices at this stage: */ @@ -391,6 +396,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.SecondaryColor; struct gl_client_array *to = &ac->Cache.SecondaryColor; + (void) stride; import( ctx, type, to, from ); @@ -403,6 +409,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.FogCoord; struct gl_client_array *to = &ac->Cache.FogCoord; + (void) type; (void) stride; /* Limited choices at this stage: */ @@ -427,6 +434,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.EdgeFlag; struct gl_client_array *to = &ac->Cache.EdgeFlag; + (void) type; (void) stride; /* Limited choices at this stage: */ @@ -451,6 +459,7 @@ ACcontext *ac = AC_CONTEXT(ctx); const struct gl_client_array *from = &ac->Raw.Attrib[index]; struct gl_client_array *to = &ac->Cache.Attrib[index]; + (void) type; (void) stride; ASSERT(index < VERT_ATTRIB_MAX); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/beos/GLView.h x11r682/xc/extras/Mesa/src/mesa/drivers/beos/GLView.h --- xc/extras/Mesa/src/mesa/drivers/beos/GLView.h 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/drivers/beos/GLView.h 2004-12-15 02:50:57.000000000 +0100 @@ -0,0 +1,196 @@ +/******************************************************************************* +/ +/ File: GLView.h +/ +/ Copyright 1993-98, Be Incorporated, All Rights Reserved. +/ +*******************************************************************************/ + +#ifndef BGLVIEW_H +#define BGLVIEW_H + +// added by Brian Paul: +#ifndef BGL_RGB +#define BGL_RGB 0 +#define BGL_INDEX 1 +#define BGL_SINGLE 0 +#define BGL_DOUBLE 2 +#define BGL_DIRECT 0 +#define BGL_INDIRECT 4 +#define BGL_ACCUM 8 +#define BGL_ALPHA 16 +#define BGL_DEPTH 32 +#define BGL_OVERLAY 64 +#define BGL_UNDERLAY 128 +#define BGL_STENCIL 512 +#endif + + +#include +#include +#include +#include +#include +#include +#include + +class BGLView : public BView { +public: + + BGLView(BRect rect, char *name, + ulong resizingMode, ulong mode, + ulong options); + virtual ~BGLView(); + + void LockGL(); + void UnlockGL(); + void SwapBuffers(); + + // Added for Mesa (can't be virtual!) + void CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height); + + BView * EmbeddedView(); + status_t CopyPixelsOut(BPoint source, BBitmap *dest); + status_t CopyPixelsIn(BBitmap *source, BPoint dest); + + virtual void ErrorCallback(unsigned long errorCode); // GLenum errorCode); + + virtual void Draw(BRect updateRect); + + virtual void AttachedToWindow(); + virtual void AllAttached(); + virtual void DetachedFromWindow(); + virtual void AllDetached(); + + virtual void FrameResized(float width, float height); + virtual status_t Perform(perform_code d, void *arg); + + /* The public methods below, for the moment, + are just pass-throughs to BView */ + + virtual status_t Archive(BMessage *data, bool deep = true) const; + + virtual void MessageReceived(BMessage *msg); + virtual void SetResizingMode(uint32 mode); + + virtual void Show(); + virtual void Hide(); + + virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, + BMessage *specifier, int32 form, + const char *property); + virtual status_t GetSupportedSuites(BMessage *data); + + /* New public functions */ + void DirectConnected( direct_buffer_info *info ); + void EnableDirectMode( bool enabled ); + +private: + + virtual void _ReservedGLView1(); + virtual void _ReservedGLView2(); + virtual void _ReservedGLView3(); + virtual void _ReservedGLView4(); + virtual void _ReservedGLView5(); + virtual void _ReservedGLView6(); + virtual void _ReservedGLView7(); + virtual void _ReservedGLView8(); + + BGLView(const BGLView &); + BGLView &operator=(const BGLView &); + + void dither_front(); + bool confirm_dither(); + void draw(BRect r); + + void * m_gc; + uint32 m_options; + uint32 m_ditherCount; + BLocker m_drawLock; + BLocker m_displayLock; +#if OLD_GLVIEW + BView * m_embeddedFront; + BView * m_embeddedBack; +#else + void * m_clip_info; + void * _reserved1; +#endif + BBitmap * m_ditherMap; + BRect m_bounds; + int16 * m_errorBuffer[2]; + uint64 _reserved[8]; + + /* Direct Window stuff */ +private: + void drawScanline( int x1, int x2, int y, void *data ); + static void scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2); + void lock_draw(); + void unlock_draw(); + bool validateView(); +}; + + + +class BGLScreen : public BWindowScreen { +public: + BGLScreen(char *name, + ulong screenMode, ulong options, + status_t *error, bool debug=false); + ~BGLScreen(); + + void LockGL(); + void UnlockGL(); + void SwapBuffers(); + virtual void ErrorCallback(GLenum errorCode); + + virtual void ScreenConnected(bool connected); + virtual void FrameResized(float width, float height); + virtual status_t Perform(perform_code d, void *arg); + + /* The public methods below, for the moment, + are just pass-throughs to BWindowScreen */ + + virtual status_t Archive(BMessage *data, bool deep = true) const; + virtual void MessageReceived(BMessage *msg); + + virtual void Show(); + virtual void Hide(); + + virtual BHandler *ResolveSpecifier(BMessage *msg, + int32 index, + BMessage *specifier, + int32 form, + const char *property); + virtual status_t GetSupportedSuites(BMessage *data); + +private: + + virtual void _ReservedGLScreen1(); + virtual void _ReservedGLScreen2(); + virtual void _ReservedGLScreen3(); + virtual void _ReservedGLScreen4(); + virtual void _ReservedGLScreen5(); + virtual void _ReservedGLScreen6(); + virtual void _ReservedGLScreen7(); + virtual void _ReservedGLScreen8(); + + BGLScreen(const BGLScreen &); + BGLScreen &operator=(const BGLScreen &); + + void * m_gc; + long m_options; + BLocker m_drawLock; + + int32 m_colorSpace; + uint32 m_screen_mode; + + uint64 _reserved[7]; +}; + + +#endif + + + + + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/Makefile.template x11r682/xc/extras/Mesa/src/mesa/drivers/dri/Makefile.template --- xc/extras/Mesa/src/mesa/drivers/dri/Makefile.template 2004-07-22 08:51:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/Makefile.template 2004-12-15 02:50:57.000000000 +0100 @@ -37,6 +37,7 @@ -I$(TOP)/src/mesa/drivers/dri/common \ -Iserver \ -I$(DRM_SOURCE_PATH)/shared \ + -I$(DRM_SOURCE_PATH)/linux \ -I$(TOP)/include \ -I$(TOP)/include/GL/internal \ -I$(TOP)/src/mesa \ @@ -94,6 +95,7 @@ # Remove .o and backup files clean: - -rm -f *.o */*.o *~ *.o *~ *.so server/*.o $(SYMLINKS) depend + -rm -f *.o */*.o *~ *.o *~ *.so server/*.o $(SYMLINKS) + -rm -f depend depend.bak include depend diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/depthtmp.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/depthtmp.h --- xc/extras/Mesa/src/mesa/drivers/dri/common/depthtmp.h 2004-06-16 11:17:56.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/depthtmp.h 2004-12-15 02:50:57.000000000 +0100 @@ -64,6 +64,42 @@ HW_WRITE_UNLOCK(); } +static void TAG(WriteMonoDepthSpan)( GLcontext *ctx, + GLuint n, GLint x, GLint y, + const GLdepth depth, + const GLubyte mask[] ) +{ + HW_WRITE_LOCK() + { + GLint x1; + GLint n1; + LOCAL_DEPTH_VARS; + + y = Y_FLIP( y ); + + HW_CLIPLOOP() + { + GLint i = 0; + CLIPSPAN( x, y, n, x1, n1, i ); + + if ( DBG ) fprintf( stderr, "%s %d..%d (x1 %d) = %u\n", + __FUNCTION__, (int)i, (int)n1, (int)x1, (GLuint)depth ); + + if ( mask ) { + for ( ; i < n1 ; i++, x1++ ) { + if ( mask[i] ) WRITE_DEPTH( x1, y, depth ); + } + } else { + for ( ; i < n1 ; i++, x1++ ) { + WRITE_DEPTH( x1, y, depth ); + } + } + } + HW_ENDCLIPLOOP(); + } + HW_WRITE_UNLOCK(); +} + static void TAG(WriteDepthPixels)( GLcontext *ctx, GLuint n, const GLint x[], diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.c --- xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.c 2004-08-13 01:05:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.c 2004-12-15 02:50:57.000000000 +0100 @@ -141,6 +141,26 @@ } } +/* + * fd.o bug #1713: Some rare libGL's have __glXFindDRIScreen defined but do not + * export it via glXGetProcAddress. These are not supported anymore, so print + * an error message to that effect. - ajax 2004-10-26 + */ +typedef __DRIscreen *(*PFNGLXFINDDRISCREEN)(__DRInativeDisplay *, int); + +static __DRIscreen *glx_find_dri_screen(__DRInativeDisplay *d, int i) +{ + PFNGLXFINDDRISCREEN findscreen = + (PFNGLXFINDDRISCREEN)glXGetProcAddress("__glXFindDRIScreen"); + + if (!findscreen) + { + __driUtilMessage("glXGetProcAddress(\"__glXFindDRIScreen\") failed!"); + __driUtilMessage("Your libGL is too old, please upgrade."); + return NULL; + } + else return findscreen(d, i); +} /*****************************************************************/ /** \name Visual utility functions */ @@ -212,23 +232,33 @@ static __DRIdrawable *__driFindDrawable(void *drawHash, __DRIid draw) { int retcode; - __DRIdrawable *pdraw; + union + { + __DRIdrawable *pdraw; + void *ptr; + } p; - retcode = drmHashLookup(drawHash, draw, (void **)&pdraw); + retcode = drmHashLookup(drawHash, draw, &p.ptr); if (retcode) return NULL; - return pdraw; + return p.pdraw; } static void __driRemoveDrawable(void *drawHash, __DRIdrawable *pdraw) { int retcode; - __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)pdraw->private; + union + { + __DRIdrawablePrivate *pdp; + void *ptr; + } p; - retcode = drmHashLookup(drawHash, pdp->draw, (void **)&pdraw); + p.pdp = (__DRIdrawablePrivate *)pdraw->private; + + retcode = drmHashLookup(drawHash, p.pdp->draw, &p.ptr); if (!retcode) { /* Found */ - drmHashDelete(drawHash, pdp->draw); + drmHashDelete(drawHash, p.pdp->draw); } } @@ -286,21 +316,25 @@ static void __driGarbageCollectDrawables(void *drawHash) { __DRIid draw; - __DRIdrawable *pdraw; __DRInativeDisplay *dpy; + union + { + __DRIdrawable *pdraw; + void *ptr; + } p; - if (drmHashFirst(drawHash, &draw, (void **)&pdraw)) { + if (drmHashFirst(drawHash, &draw, &p.ptr)) { do { - __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)pdraw->private; + __DRIdrawablePrivate *pdp = (__DRIdrawablePrivate *)p.pdraw->private; dpy = pdp->driScreenPriv->display; if (! (*window_exists)(dpy, draw)) { /* Destroy the local drawable data in the hash table, if the drawable no longer exists in the Xserver */ - __driRemoveDrawable(drawHash, pdraw); - (*pdraw->destroyDrawable)(dpy, pdraw->private); - _mesa_free(pdraw); + __driRemoveDrawable(drawHash, p.pdraw); + (*p.pdraw->destroyDrawable)(dpy, p.pdraw->private); + _mesa_free(p.pdraw); } - } while (drmHashNext(drawHash, &draw, (void **)&pdraw)); + } while (drmHashNext(drawHash, &draw, &p.ptr)); } } @@ -353,7 +387,7 @@ return GL_FALSE; } - pDRIScreen = __glXFindDRIScreen(dpy, scrn); + pDRIScreen = glx_find_dri_screen(dpy, scrn); if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) { /* ERROR!!! */ return GL_FALSE; @@ -529,7 +563,7 @@ return GL_FALSE; } - pDRIScreen = __glXFindDRIScreen(dpy, scrn); + pDRIScreen = glx_find_dri_screen(dpy, scrn); if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) { /* ERROR!!! */ return GL_FALSE; @@ -563,7 +597,7 @@ return GL_FALSE; } - pDRIScreen = __glXFindDRIScreen(dpy, scrn); + pDRIScreen = glx_find_dri_screen(dpy, scrn); modes = (driCompareGLXAPIVersion( 20040317 ) >= 0) ? gc->driContext.mode : findConfigMode( dpy, scrn, gc->vid, pDRIScreen ); @@ -793,7 +827,7 @@ int renderType, const int *attrs) { - __DRIscreen * const pDRIScreen = __glXFindDRIScreen(dpy, modes->screen); + __DRIscreen * const pDRIScreen = glx_find_dri_screen(dpy, modes->screen); __DRIscreenPrivate *psp; __DRIdrawablePrivate *pdp; @@ -848,7 +882,7 @@ _mesa_free(pdp); return NULL; #else - pdp->getInfo = XF86DRIGetDrawableInfo; + pdp->getInfo = (PFNGLXGETDRAWABLEINFOPROC) XF86DRIGetDrawableInfo; #endif /* DRI_NEW_INTERFACE_ONLY */ } @@ -988,7 +1022,7 @@ __DRIscreenPrivate *psp; void * const shareCtx = (pshare != NULL) ? pshare->driverPrivate : NULL; - pDRIScreen = __glXFindDRIScreen(dpy, modes->screen); + pDRIScreen = glx_find_dri_screen(dpy, modes->screen); if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) { /* ERROR!!! */ return NULL; @@ -1033,16 +1067,16 @@ pctx->bindContext3 = driBindContext3; pctx->unbindContext3 = driUnbindContext3; #else - pctx->bindContext = driBindContext; - pctx->unbindContext = driUnbindContext; + pctx->bindContext = (void *)driBindContext; + pctx->unbindContext = (void *)driUnbindContext; if ( driCompareGLXAPIVersion( 20030606 ) >= 0 ) { - pctx->bindContext2 = driBindContext2; - pctx->unbindContext2 = driUnbindContext2; + pctx->bindContext2 = (void *)driBindContext2; + pctx->unbindContext2 = (void *)driUnbindContext2; } if ( driCompareGLXAPIVersion( 20040415 ) >= 0 ) { - pctx->bindContext3 = driBindContext3; - pctx->unbindContext3 = driUnbindContext3; + pctx->bindContext3 = (void *)driBindContext3; + pctx->unbindContext3 = (void *)driUnbindContext3; } #endif @@ -1088,7 +1122,7 @@ __DRIscreen *pDRIScreen; const __GLcontextModes *modes; - pDRIScreen = __glXFindDRIScreen(dpy, vis->screen); + pDRIScreen = glx_find_dri_screen(dpy, vis->screen); if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) { /* ERROR!!! */ return NULL; @@ -1347,7 +1381,7 @@ int directCapable; __DRIscreenPrivate *psp = NULL; drm_handle_t hSAREA; - drmAddress pSAREA; + drmAddress pSAREA = MAP_FAILED; char *BusID; __GLcontextModes *modes; __GLcontextModes *temp; @@ -1360,8 +1394,9 @@ int status; const char * err_msg; const char * err_extra; - - + memset (&framebuffer, 0, sizeof (framebuffer)); + framebuffer.base = MAP_FAILED; + if (!XF86DRIQueryDirectRenderingCapable(dpy, scrn, &directCapable) || !directCapable) { return NULL; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.h --- xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.h 2004-07-22 08:51:27.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/dri_util.h 2004-12-15 02:50:57.000000000 +0100 @@ -558,8 +558,11 @@ driCalculateSwapUsage( __DRIdrawablePrivate *dPriv, int64_t last_swap_ust, int64_t current_ust ); +/* Test for the GLX header glx.h */ +#ifndef GLX extern void (*glXGetProcAddress(const GLubyte *procname))( void ); +#endif #endif /* GLX_DIRECT_RENDERING */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/mmio.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/mmio.h --- xc/extras/Mesa/src/mesa/drivers/dri/common/mmio.h 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/mmio.h 2004-12-15 02:50:57.000000000 +0100 @@ -0,0 +1,63 @@ +/* + * (C) Copyright IBM Corporation 2004 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file mmio.h + * Functions for properly handling memory mapped IO on various platforms. + * + * \author Ian Romanick + */ + + +#ifndef MMIO_H +#define MMIO_H + +#include + +#if defined( __powerpc__ ) + +static __inline__ uint32_t +read_MMIO_LE32( volatile void * base, unsigned long offset ) +{ + volatile void * p = ((volatile char *) base) + offset; + uint32_t val; + + __asm__ __volatile__( "lwbrx %0, %1, %2 ; eieio" + : "=r" (val) + : "b" (base), "r" (offset), "m" (p) ); + return val; +} + +#else + +static __inline__ uint32_t +read_MMIO_LE32( volatile void * base, unsigned long offset ) +{ + volatile uint32_t * p = (volatile uint32_t *) (((volatile char *) base) + offset); + return LE32_TO_CPU( p[0] ); +} + +#endif + +#endif /* MMIO_H */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/spantmp.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/spantmp.h --- xc/extras/Mesa/src/mesa/drivers/dri/common/spantmp.h 2004-06-16 11:17:56.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/spantmp.h 2004-12-15 02:50:57.000000000 +0100 @@ -123,15 +123,29 @@ HW_WRITE_CLIPLOOP() { - for (i=0;i0;i++,x1++,n1--) - if (mask[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(); } @@ -186,12 +208,23 @@ HW_WRITE_CLIPLOOP() { - for (i=0;i= 2) # include @@ -256,7 +260,7 @@ string = numStart; /* scale of the first digit */ - scale = sign * powf (10.0f, (GLfloat)(pointPos-1 + exponent)); + scale = sign * (GLfloat)pow (10.0, (GLdouble)(pointPos-1 + exponent)); /* second pass: parse digits */ do { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/common/xmlpool.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/common/xmlpool.h --- xc/extras/Mesa/src/mesa/drivers/dri/common/xmlpool.h 2004-06-16 11:17:57.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/common/xmlpool.h 2004-12-15 02:50:57.000000000 +0100 @@ -273,4 +273,25 @@ DRI_CONF_DESC(de,"Anzahl der Textureinheiten") \ DRI_CONF_OPT_END +/* Options for features that are not done in hardware by the driver (like GL_ARB_vertex_program + On cards where there is no documentation (r200) or on rasterization-only hardware). */ +#define DRI_CONF_SECTION_SOFTWARE \ +DRI_CONF_SECTION_BEGIN \ + DRI_CONF_DESC(de,"FunktionalitÀt, die nicht durch die Hardware beschleunigt wird") \ + DRI_CONF_DESC(en,"Features that are not hardware-accelerated") + +#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \ +DRI_CONF_OPT_BEGIN(arb_vertex_program,bool,def) \ + DRI_CONF_DESC(de,"GL_ARB_vertex_program aktivieren") \ + DRI_CONF_DESC(en,"Enable GL_ARB_vertex_program") \ + DRI_CONF_DESC(fr,"Activer GL_ARB_vertex_program") \ +DRI_CONF_OPT_END + +#define DRI_CONF_NV_VERTEX_PROGRAM(def) \ +DRI_CONF_OPT_BEGIN(nv_vertex_program,bool,def) \ + DRI_CONF_DESC(de,"GL_NV_vertex_program aktivieren") \ + DRI_CONF_DESC(en,"Enable GL_NV_vertex_program") \ + DRI_CONF_DESC(fr,"Activer GL_NV_vertex_program") \ +DRI_CONF_OPT_END + #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/dri_client/Makefile x11r682/xc/extras/Mesa/src/mesa/drivers/dri/dri_client/Makefile --- xc/extras/Mesa/src/mesa/drivers/dri/dri_client/Makefile 2004-06-16 11:18:31.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/dri_client/Makefile 2004-12-15 02:50:57.000000000 +0100 @@ -53,6 +53,6 @@ # Remove .o and backup files clean: - -rm -f *.o */*.o *~ *.so *.a + -rm -f *.o */*.o *~ *.so *.a depend depend.bak include depend diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c --- xc/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c 2004-06-16 11:18:00.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_vtxfmt.c 2004-12-15 02:50:57.000000000 +0100 @@ -161,13 +161,13 @@ static void ffb_choose_Normal3f(GLfloat x, GLfloat y, GLfloat z) { choose_normals(); - glNormal3f(x, y, z); + GL_CALL(Normal3f)(x, y, z); } static void ffb_choose_Normal3fv(const GLfloat *v) { choose_normals(); - glNormal3fv(v); + GL_CALL(Normal3fv)(v); } /* Vertex functions: */ @@ -267,13 +267,13 @@ * correctly: */ if (fmesa->imm.prim != PRIM_OUTSIDE_BEGIN_END ) - glBegin(fmesa->imm.prim); + GL_CALL(Begin)(fmesa->imm.prim); if (ctx->Light.Enabled) { - glColor4fv(ctx->Current.Color); /* Catch ColorMaterial */ - glNormal3fv(current->normal); + GL_CALL(Color4fv)(ctx->Current.Color); /* Catch ColorMaterial */ + GL_CALL(Normal3fv)(current->normal); } else { - glColor4fv(current->color); + GL_CALL(Color4fv)(current->color); } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i810/Makefile x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i810/Makefile --- xc/extras/Mesa/src/mesa/drivers/dri/i810/Makefile 2004-06-16 11:18:05.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i810/Makefile 2004-12-15 02:50:57.000000000 +0100 @@ -15,7 +15,8 @@ ../common/texmem.c \ ../common/vblank.c \ ../common/dri_util.c \ - ../common/glcontextmodes.c + ../common/glcontextmodes.c \ + ../common/xmlconfig.c DRIVER_SOURCES = \ i810context.c \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.c 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -38,54 +38,12 @@ * Mesa's Driver Functions ***************************************/ -/* This is the extension list explicitly enabled by the client and - * excludes functionality available in Mesa and also excludes legacy - * extensions. It is recognized that in an open source driver, those - * extensions will probably be re-enabled. - */ -static const GLubyte *i830GetString( GLcontext *ctx, GLenum name ) +static const char * const card_extensions[] = { -#if 0 - if (name == GL_EXTENSIONS) - return - "GL_ARB_multitexture " - "GL_ARB_texture_border_clamp " - "GL_ARB_texture_compression " - "GL_ARB_texture_env_add " - "GL_ARB_texture_env_combine " - "GL_ARB_texture_env_dot3 " - "GL_ARB_texture_mirrored_repeat " - "GL_ARB_transpose_matrix " - "GL_ARB_vertex_buffer_object " - "GL_ARB_vertex_program " - "GL_ARB_window_pos " - "GL_EXT_abgr " - "GL_EXT_bgra " - "GL_EXT_blend_color " - "GL_EXT_blend_func_separate " - "GL_EXT_blend_minmax " - "GL_EXT_blend_subtract " - "GL_EXT_clip_volume_hint " - "GL_EXT_compiled_vertex_array " - "GL_EXT_draw_range_elements " - "GL_EXT_fog_coord " - "GL_EXT_multi_draw_arrays " - "GL_EXT_packed_pixels " - "GL_EXT_rescale_normal " - "GL_EXT_secondary_color " - "GL_EXT_separate_specular_color " - "GL_EXT_stencil_wrap " - "GL_EXT_texture_env_add " - "GL_EXT_texture_env_combine " - "GL_EXT_texture_filter_anisotropic " - "GL_IBM_texture_mirrored_repeat " - "GL_MESA_ycbcr_texture " - "GL_MESA_window_pos " - "GL_NV_texgen_reflection " - "GL_SGIS_generate_mipmap "; -#endif - return intelGetString( ctx, name ); -} + "GL_ARB_texture_env_crossbar", + "GL_NV_blend_square", + NULL +}; static void i830InitDriverFunctions( struct dd_function_table *functions ) @@ -93,7 +51,6 @@ intelInitDriverFunctions( functions ); i830InitStateFuncs( functions ); i830InitTextureFuncs( functions ); - functions->GetString = i830GetString; } @@ -142,7 +99,7 @@ 4, 11, /* max 2D texture size is 2048x2048 */ 8, /* max 3D texture size is 256^3 */ - 0, /* max CUBE. not supported */ + 10, /* max CUBE texture size is 1024x1024 */ 11, /* max RECT. supported */ 12, GL_FALSE ); @@ -153,6 +110,8 @@ intel->verts = TNL_CONTEXT(ctx)->clipspace.vertex_buf; + driInitExtensions( ctx, card_extensions, GL_FALSE ); + i830InitState( i830 ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.h --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.h 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_context.h 2004-12-15 02:50:58.000000000 +0100 @@ -89,8 +89,9 @@ #define I830_TEXREG_TM0S2 3 #define I830_TEXREG_TM0S3 4 #define I830_TEXREG_TM0S4 5 -#define I830_TEXREG_MCS 6 /* _3DSTATE_MAP_COORD_SETS */ -#define I830_TEX_SETUP_SIZE 7 +#define I830_TEXREG_MCS 6 /* _3DSTATE_MAP_COORD_SETS */ +#define I830_TEXREG_CUBE 7 /* _3DSTATE_MAP_SUBE */ +#define I830_TEX_SETUP_SIZE 8 #define I830_TEXBLEND_SIZE 12 /* (4 args + op) * 2 + COLOR_FACTOR */ @@ -169,12 +170,9 @@ /* i830_texblend.c */ -extern GLuint -i830SetBlend_GL1_2(i830ContextPtr i830, int unit, - GLenum envMode, GLenum format, - GLuint texel_op, - GLuint *state, - const GLfloat *envcolor ); +extern GLuint i830SetTexEnvCombine(i830ContextPtr i830, + const struct gl_tex_env_combine_state * combine, GLint blendUnit, + GLuint texel_op, GLuint *state, const GLfloat *factor ); extern void i830EmitTextureBlend( i830ContextPtr i830 ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_metaops.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_metaops.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_metaops.c 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_metaops.c 2004-12-15 02:50:58.000000000 +0100 @@ -163,10 +163,17 @@ */ static void set_no_texture( i830ContextPtr i830 ) { - i830->meta.TexBlendWordsUsed[0] = - i830SetBlend_GL1_2( i830, 0, GL_NONE, 0, - TEXBLENDARG_TEXEL0, - i830->meta.TexBlend[0], 0 ); + static const struct gl_tex_env_combine_state comb = { + GL_NONE, GL_NONE, + { GL_TEXTURE, 0, 0, }, { GL_TEXTURE, 0, 0, }, + { GL_SRC_COLOR, 0, 0 }, { GL_SRC_ALPHA, 0, 0 }, + 0, 0, 0, 0 + }; + + i830->meta.TexBlendWordsUsed[0] = + i830SetTexEnvCombine( i830, & comb, 0, TEXBLENDARG_TEXEL0, + i830->meta.TexBlend[0], NULL); + i830->meta.TexBlend[0][0] |= TEXOP_LAST_STAGE; i830->meta.emitted &= ~I830_UPLOAD_TEXBLEND(0); } @@ -177,10 +184,17 @@ static void enable_texture_blend_replace( i830ContextPtr i830, GLenum format ) { - i830->meta.TexBlendWordsUsed[0] = - i830SetBlend_GL1_2( i830, 0, GL_REPLACE, format, - TEXBLENDARG_TEXEL0, - i830->meta.TexBlend[0], 0 ); + static const struct gl_tex_env_combine_state comb = { + GL_REPLACE, GL_REPLACE, + { GL_TEXTURE, 0, 0, }, { GL_TEXTURE, 0, 0, }, + { GL_SRC_COLOR, 0, 0 }, { GL_SRC_ALPHA, 0, 0 }, + 0, 0, 1, 1 + }; + + i830->meta.TexBlendWordsUsed[0] = + i830SetTexEnvCombine( i830, & comb, 0, TEXBLENDARG_TEXEL0, + i830->meta.TexBlend[0], NULL); + i830->meta.TexBlend[0][0] |= TEXOP_LAST_STAGE; i830->meta.emitted &= ~I830_UPLOAD_TEXBLEND(0); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_reg.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_reg.h --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_reg.h 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_reg.h 2004-12-15 02:50:58.000000000 +0100 @@ -637,6 +637,7 @@ #define TM0S2_PITCH_SHIFT 21 #define TM0S2_CUBE_FACE_ENA_SHIFT 15 +#define TM0S2_CUBE_FACE_ENA_MASK (1<<15) #define TM0S2_MAP_FORMAT (1<<14) #define TM0S2_VERTICAL_LINE_STRIDE (1<<13) #define TM0S2_VERITCAL_LINE_STRIDE_OFF (1<<12) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_state.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_state.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_state.c 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_state.c 2004-12-15 02:50:58.000000000 +0100 @@ -263,11 +263,15 @@ ALPHA_REF_VALUE(refInt)); } -/* This function makes sure that the proper enables are - * set for LogicOp, Independant Alpha Blend, and Blending. - * It needs to be called from numerous places where we +/** + * Makes sure that the proper enables are set for LogicOp, Independant Alpha + * Blend, and Blending. It needs to be called from numerous places where we * could change the LogicOp or Independant Alpha Blend without subsequent * calls to glEnable. + * + * \todo + * This function is substantially different from the old i830-specific driver. + * I'm not sure which is correct. */ static void i830EvalLogicOpBlendState(GLcontext *ctx) { @@ -310,48 +314,16 @@ i830->state.Ctx[I830_CTXREG_BLENDCOLOR1] = (a<<24) | (r<<16) | (g<<8) | b; } -static void i830BlendEquationSeparate(GLcontext *ctx, GLenum modeRGB, - GLenum modeA) -{ - i830ContextPtr i830 = I830_CONTEXT(ctx); - int func = ENABLE_ALPHA_BLENDFUNC; - - assert( modeRGB == modeA ); - - if (INTEL_DEBUG&DEBUG_DRI) - fprintf(stderr, "%s %s\n", __FUNCTION__, - _mesa_lookup_enum_by_nr(modeRGB)); - - /* This will catch a logicop blend equation */ - i830EvalLogicOpBlendState(ctx); - - switch(modeRGB) { - case GL_FUNC_ADD: - func |= BLENDFUNC_ADD; - break; - case GL_MIN: - func |= BLENDFUNC_MIN; - break; - case GL_MAX: - func |= BLENDFUNC_MAX; - break; - case GL_FUNC_SUBTRACT: - func |= BLENDFUNC_SUB; - break; - case GL_FUNC_REVERSE_SUBTRACT: - func |= BLENDFUNC_RVRSE_SUB; - break; - case GL_LOGIC_OP: - default: return; - } - - I830_STATECHANGE(i830, I830_UPLOAD_CTX); - i830->state.Ctx[I830_CTXREG_STATE1] &= ~BLENDFUNC_MASK; - i830->state.Ctx[I830_CTXREG_STATE1] |= func; -} - - +/** + * Calculate the hardware blend factor setting. This same function is used + * for source and destination of both alpha and RGB. + * + * \returns + * The hardware register value for the specified blend factor. This value + * will need to be shifted into the correct position for either source or + * destination factor. + */ static int translate_blend_factor( GLenum factor ) { switch(factor) { @@ -390,35 +362,89 @@ } } -static void i830BlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, - GLenum dfactorRGB, GLenum sfactorA, - GLenum dfactorA ) + +/** + * Sets both the blend equation (called "function" in i830 docs) and the + * blend function (called "factor" in i830 docs). This is done in a single + * function because some blend equations (i.e., \c GL_MIN and \c GL_MAX) + * change the interpretation of the blend function. + */ +static void i830_set_blend_state( GLcontext * ctx ) { i830ContextPtr i830 = I830_CONTEXT(ctx); - int iab = i830->state.Ctx[I830_CTXREG_IALPHAB]; - int s1 = i830->state.Ctx[I830_CTXREG_STATE1]; + int funcA; + int funcRGB; + int eqnA; + int eqnRGB; + int iab; + int s1; - if (INTEL_DEBUG&DEBUG_DRI) - fprintf(stderr, "%s\n", __FUNCTION__); + funcRGB = SRC_BLND_FACT( translate_blend_factor( ctx->Color.BlendSrcRGB ) ) + | DST_BLND_FACT( translate_blend_factor( ctx->Color.BlendDstRGB ) ); - iab &= ~(SRC_DST_ABLEND_MASK|ENABLE_INDPT_ALPHA_BLEND); - s1 &= ~SRC_DST_BLND_MASK; - - iab |= (ENABLE_SRC_ABLEND_FACTOR|ENABLE_DST_ABLEND_FACTOR); - s1 |= (ENABLE_SRC_BLND_FACTOR|ENABLE_DST_BLND_FACTOR); + switch(ctx->Color.BlendEquationRGB) { + case GL_FUNC_ADD: + eqnRGB = BLENDFUNC_ADD; + break; + case GL_MIN: + eqnRGB = BLENDFUNC_MIN; + funcRGB = SRC_BLND_FACT(BLENDFACT_ONE) | DST_BLND_FACT(BLENDFACT_ONE); + break; + case GL_MAX: + eqnRGB = BLENDFUNC_MAX; + funcRGB = SRC_BLND_FACT(BLENDFACT_ONE) | DST_BLND_FACT(BLENDFACT_ONE); + break; + case GL_FUNC_SUBTRACT: + eqnRGB = BLENDFUNC_SUB; + break; + case GL_FUNC_REVERSE_SUBTRACT: + eqnRGB = BLENDFUNC_RVRSE_SUB; + break; + default: + fprintf( stderr, "[%s:%u] Invalid RGB blend equation (0x%04x).\n", + __func__, __LINE__, ctx->Color.BlendEquationRGB ); + return; + } + + + funcA = SRC_ABLEND_FACT( translate_blend_factor( ctx->Color.BlendSrcA ) ) + | DST_ABLEND_FACT( translate_blend_factor( ctx->Color.BlendDstA ) ); - if (ctx->Color.BlendEquationRGB == GL_MIN || - ctx->Color.BlendEquationRGB == GL_MAX) { - sfactorA = sfactorRGB = dfactorA = dfactorRGB = GL_ONE; + switch(ctx->Color.BlendEquationA) { + case GL_FUNC_ADD: + eqnA = BLENDFUNC_ADD; + break; + case GL_MIN: + eqnA = BLENDFUNC_MIN; + funcA = SRC_BLND_FACT(BLENDFACT_ONE) | DST_BLND_FACT(BLENDFACT_ONE); + break; + case GL_MAX: + eqnA = BLENDFUNC_MAX; + funcA = SRC_BLND_FACT(BLENDFACT_ONE) | DST_BLND_FACT(BLENDFACT_ONE); + break; + case GL_FUNC_SUBTRACT: + eqnA = BLENDFUNC_SUB; + break; + case GL_FUNC_REVERSE_SUBTRACT: + eqnA = BLENDFUNC_RVRSE_SUB; + break; + default: + fprintf( stderr, "[%s:%u] Invalid alpha blend equation (0x%04x).\n", + __func__, __LINE__, ctx->Color.BlendEquationA ); + return; } - iab |= SRC_ABLEND_FACT(translate_blend_factor(sfactorA)); - iab |= DST_ABLEND_FACT(translate_blend_factor(dfactorA)); - s1 |= SRC_BLND_FACT(translate_blend_factor(sfactorRGB)); - s1 |= DST_BLND_FACT(translate_blend_factor(dfactorRGB)); + iab = eqnA | funcA + | _3DSTATE_INDPT_ALPHA_BLEND_CMD + | ENABLE_SRC_ABLEND_FACTOR | ENABLE_DST_ABLEND_FACTOR + | ENABLE_ALPHA_BLENDFUNC; + s1 = eqnRGB | funcRGB + | _3DSTATE_MODES_1_CMD + | ENABLE_SRC_BLND_FACTOR | ENABLE_DST_BLND_FACTOR + | ENABLE_COLR_BLND_FUNC; - if (sfactorA != sfactorRGB || dfactorA != dfactorRGB) + if ( (eqnA | funcA) != (eqnRGB | funcRGB) ) iab |= ENABLE_INDPT_ALPHA_BLEND; else iab |= DISABLE_INDPT_ALPHA_BLEND; @@ -429,6 +455,54 @@ i830->state.Ctx[I830_CTXREG_IALPHAB] = iab; i830->state.Ctx[I830_CTXREG_STATE1] = s1; } + + /* This will catch a logicop blend equation. It will also ensure + * independant alpha blend is really in the correct state (either enabled + * or disabled) if blending is already enabled. + */ + + i830EvalLogicOpBlendState(ctx); + + if (0) { + fprintf(stderr, "[%s:%u] STATE1: 0x%08x IALPHAB: 0x%08x blend is %sabled\n", + __func__, __LINE__, + i830->state.Ctx[I830_CTXREG_STATE1], + i830->state.Ctx[I830_CTXREG_IALPHAB], + (ctx->Color.BlendEnabled) ? "en" : "dis"); + } +} + + +static void i830BlendEquationSeparate(GLcontext *ctx, GLenum modeRGB, + GLenum modeA) +{ + if (INTEL_DEBUG&DEBUG_DRI) + fprintf(stderr, "%s -> %s, %s\n", __FUNCTION__, + _mesa_lookup_enum_by_nr(modeRGB), + _mesa_lookup_enum_by_nr(modeA)); + + (void) modeRGB; + (void) modeA; + i830_set_blend_state( ctx ); +} + + +static void i830BlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, + GLenum dfactorRGB, GLenum sfactorA, + GLenum dfactorA ) +{ + if (INTEL_DEBUG&DEBUG_DRI) + fprintf(stderr, "%s -> RGB(%s, %s) A(%s, %s)\n", __FUNCTION__, + _mesa_lookup_enum_by_nr(sfactorRGB), + _mesa_lookup_enum_by_nr(dfactorRGB), + _mesa_lookup_enum_by_nr(sfactorA), + _mesa_lookup_enum_by_nr(dfactorA)); + + (void) sfactorRGB; + (void) dfactorRGB; + (void) sfactorA; + (void) dfactorA; + i830_set_blend_state( ctx ); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texblend.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texblend.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texblend.c 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texblend.c 2004-12-15 02:50:58.000000000 +0100 @@ -113,640 +113,35 @@ } -GLuint i830SetBlend_GL1_2(i830ContextPtr i830, int blendUnit, - GLenum envMode, GLenum format, GLuint texel_op, - GLuint *state, const GLfloat *factor) +/** + * Calculate the hardware instuctions to setup the current texture enviromnemt + * settings. Since \c gl_texture_unit::_CurrentCombine is used, both + * "classic" texture enviroments and GL_ARB_texture_env_combine type texture + * environments are treated identically. + * + * \todo + * This function should return \c GLboolean. When \c GL_FALSE is returned, + * it means that an environment is selected that the hardware cannot do. This + * is the way the Radeon and R200 drivers work. + * + * \todo + * Looking at i830_3d_regs.h, it seems the i830 can do part of + * GL_ATI_texture_env_combine3. It can handle using \c GL_ONE and + * \c GL_ZERO as combine inputs (which the code already supports). It can + * also handle the \c GL_MODULATE_ADD_ATI mode. Is it worth investigating + * partial support for the extension? + */ +GLuint +i830SetTexEnvCombine(i830ContextPtr i830, + const struct gl_tex_env_combine_state * combine, + GLint blendUnit, + GLuint texel_op, + GLuint *state, + const GLfloat *factor ) { - if(INTEL_DEBUG&DEBUG_TEXTURE) - fprintf(stderr, "%s %s %s texel_op(0x%x)\n", - __FUNCTION__, - _mesa_lookup_enum_by_nr(format), - _mesa_lookup_enum_by_nr(envMode), - texel_op); - - switch(envMode) { - case GL_REPLACE: - switch(format) { - case GL_ALPHA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - return 4; - - case GL_LUMINANCE: - case GL_RGB: - case GL_YCBCR_MESA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 4; - - case GL_INTENSITY: - case GL_LUMINANCE_ALPHA: - case GL_RGBA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - return 4; - - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } - - case GL_MODULATE: - switch(format) { - case GL_ALPHA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 5; - - case GL_LUMINANCE: - case GL_RGB: - case GL_YCBCR_MESA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 5; - - case GL_INTENSITY: - case GL_LUMINANCE_ALPHA: - case GL_RGBA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 6; - - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } - - case GL_DECAL: - switch(format) { - case GL_RGB: - case GL_YCBCR_MESA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 4; - - case GL_RGBA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_BLEND); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_REPLICATE_ALPHA | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 6; - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } + const GLuint numColorArgs = combine->_NumArgsRGB; + const GLuint numAlphaArgs = combine->_NumArgsA; - case GL_BLEND: - switch(format) { - case GL_ALPHA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 5; - - case GL_LUMINANCE: - case GL_RGB: - case GL_YCBCR_MESA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_BLEND); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_FACTOR_N); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return emit_factor( blendUnit, state, 6, factor ); - - case GL_INTENSITY: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_BLEND); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_BLEND); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_FACTOR_N); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[6] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_FACTOR_N); - state[7] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return emit_factor( blendUnit, state, 8, factor ); - - - case GL_LUMINANCE_ALPHA: - case GL_RGBA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_BLEND); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_FACTOR_N); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[6] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return emit_factor( blendUnit, state, 7, factor ); - - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } - - case GL_ADD: - switch(format) { - case GL_ALPHA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 5; - - case GL_LUMINANCE: - case GL_RGB: - case GL_YCBCR_MESA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ADD); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ARG1); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 5; - - case GL_INTENSITY: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ADD); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ADD); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 6; - - case GL_LUMINANCE_ALPHA: - case GL_RGBA: - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_ADD); - state[1] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_SCALE_1X | - TEXOP_MODIFY_PARMS | - TEXBLENDOP_MODULATE); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - state[4] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - texel_op); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - TEXBLENDARG_CURRENT); - return 6; - - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } - - default: - /* Always set to passthru if something is funny */ - return pass_through( state, blendUnit ); - } -} - -static GLuint i830SetTexEnvCombine(i830ContextPtr i830, - const struct gl_texture_unit *texUnit, - GLint blendUnit, - GLuint texel_op, - GLuint *state, - const GLfloat *factor ) -{ GLuint blendop; GLuint ablendop; GLuint args_RGB[3]; @@ -755,6 +150,23 @@ GLuint alpha_shift; GLboolean need_factor = 0; int i; + unsigned used; + static const GLuint tex_blend_rgb[3] = { + TEXPIPE_COLOR | TEXBLEND_ARG1 | TEXBLENDARG_MODIFY_PARMS, + TEXPIPE_COLOR | TEXBLEND_ARG2 | TEXBLENDARG_MODIFY_PARMS, + TEXPIPE_COLOR | TEXBLEND_ARG0 | TEXBLENDARG_MODIFY_PARMS, + }; + static const GLuint tex_blend_a[3] = { + TEXPIPE_ALPHA | TEXBLEND_ARG1 | TEXBLENDARG_MODIFY_PARMS, + TEXPIPE_ALPHA | TEXBLEND_ARG2 | TEXBLENDARG_MODIFY_PARMS, + TEXPIPE_ALPHA | TEXBLEND_ARG0 | TEXBLENDARG_MODIFY_PARMS, + }; + static const GLuint op_rgb[4] = { + 0, + TEXBLENDARG_INV_ARG, + TEXBLENDARG_REPLICATE_ALPHA, + TEXBLENDARG_REPLICATE_ALPHA | TEXBLENDARG_INV_ARG, + }; if(INTEL_DEBUG&DEBUG_TEXTURE) fprintf(stderr, "%s\n", __FUNCTION__); @@ -764,9 +176,9 @@ * scale factor, but the ARB version (and the version in OpenGL * 1.3) does. */ - switch (texUnit->Combine.ModeRGB) { + switch (combine->ModeRGB) { case GL_DOT3_RGB_EXT: - alpha_shift = texUnit->Combine.ScaleShiftA; + alpha_shift = combine->ScaleShiftA; rgb_shift = 0; break; @@ -776,13 +188,13 @@ break; default: - rgb_shift = texUnit->Combine.ScaleShiftRGB; - alpha_shift = texUnit->Combine.ScaleShiftA; + rgb_shift = combine->ScaleShiftRGB; + alpha_shift = combine->ScaleShiftA; break; } - switch(texUnit->Combine.ModeRGB) { + switch(combine->ModeRGB) { case GL_REPLACE: blendop = TEXBLENDOP_ARG1; break; @@ -818,10 +230,16 @@ /* Handle RGB args */ for(i = 0; i < 3; i++) { - switch(texUnit->Combine.SourceRGB[i]) { + switch(combine->SourceRGB[i]) { case GL_TEXTURE: args_RGB[i] = texel_op; break; + case GL_TEXTURE0: + case GL_TEXTURE1: + case GL_TEXTURE2: + case GL_TEXTURE3: + args_RGB[i] = GetTexelOp( combine->SourceRGB[i] - GL_TEXTURE0 ); + break; case GL_CONSTANT: args_RGB[i] = TEXBLENDARG_FACTOR_N; need_factor = 1; @@ -836,7 +254,7 @@ return pass_through( state, blendUnit ); } - switch(texUnit->Combine.OperandRGB[i]) { + switch(combine->OperandRGB[i]) { case GL_SRC_COLOR: args_RGB[i] |= 0; break; @@ -863,15 +281,15 @@ * Note - the global factor is set up with alpha == .5, so * the alpha part of the DOT4 calculation should be zero. */ - if ( texUnit->Combine.ModeRGB == GL_DOT3_RGBA_EXT || - texUnit->Combine.ModeRGB == GL_DOT3_RGBA ) { + if ( combine->ModeRGB == GL_DOT3_RGBA_EXT || + combine->ModeRGB == GL_DOT3_RGBA ) { ablendop = TEXBLENDOP_DOT4; args_A[0] = TEXBLENDARG_FACTOR; /* the global factor */ args_A[1] = TEXBLENDARG_FACTOR; args_A[2] = TEXBLENDARG_FACTOR; } else { - switch(texUnit->Combine.ModeA) { + switch(combine->ModeA) { case GL_REPLACE: ablendop = TEXBLENDOP_ARG1; break; @@ -899,10 +317,16 @@ /* Handle A args */ for(i = 0; i < 3; i++) { - switch(texUnit->Combine.SourceA[i]) { + switch(combine->SourceA[i]) { case GL_TEXTURE: args_A[i] = texel_op; break; + case GL_TEXTURE0: + case GL_TEXTURE1: + case GL_TEXTURE2: + case GL_TEXTURE3: + args_A[i] = GetTexelOp( combine->SourceA[i] - GL_TEXTURE0 ); + break; case GL_CONSTANT: args_A[i] = TEXBLENDARG_FACTOR_N; need_factor = 1; @@ -917,7 +341,7 @@ return pass_through( state, blendUnit ); } - switch(texUnit->Combine.OperandA[i]) { + switch(combine->OperandA[i]) { case GL_SRC_ALPHA: args_A[i] |= 0; break; @@ -941,59 +365,38 @@ */ - /* Build color pipeline */ + /* Build color & alpha pipelines */ - state[0] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_COLOR | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - DISABLE_TEX_CNTRL_STAGE | - TEXOP_MODIFY_PARMS | - blendop); - state[1] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - args_RGB[0]); - state[2] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - args_RGB[1]); - state[3] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_COLOR | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - args_RGB[2]); - - /* Build Alpha pipeline */ - state[4] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | - TEXPIPE_ALPHA | - ENABLE_TEXOUTPUT_WRT_SEL | - TEXOP_OUTPUT_CURRENT | - TEXOP_MODIFY_PARMS | - ablendop); - state[5] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG1 | - TEXBLENDARG_MODIFY_PARMS | - args_A[0]); - state[6] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG2 | - TEXBLENDARG_MODIFY_PARMS | - args_A[1]); - state[7] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | - TEXPIPE_ALPHA | - TEXBLEND_ARG0 | - TEXBLENDARG_MODIFY_PARMS | - args_A[2]); + used = 0; + state[used++] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | + TEXPIPE_COLOR | + ENABLE_TEXOUTPUT_WRT_SEL | + TEXOP_OUTPUT_CURRENT | + DISABLE_TEX_CNTRL_STAGE | + TEXOP_MODIFY_PARMS | + blendop); + state[used++] = (_3DSTATE_MAP_BLEND_OP_CMD(blendUnit) | + TEXPIPE_ALPHA | + ENABLE_TEXOUTPUT_WRT_SEL | + TEXOP_OUTPUT_CURRENT | + TEXOP_MODIFY_PARMS | + ablendop); + + for ( i = 0 ; i < numColorArgs ; i++ ) { + state[used++] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | + tex_blend_rgb[i] | args_RGB[i]); + } + + for ( i = 0 ; i < numAlphaArgs ; i++ ) { + state[used++] = (_3DSTATE_MAP_BLEND_ARG_CMD(blendUnit) | + tex_blend_a[i] | args_A[i]); + } if (need_factor) - return emit_factor( blendUnit, state, 8, factor ); + return emit_factor( blendUnit, state, used, factor ); else - return 8; + return used; } @@ -1010,17 +413,9 @@ /* Update i830->state.TexBlend */ - if (texUnit->EnvMode == GL_COMBINE) { - tmp_sz = i830SetTexEnvCombine(i830, texUnit, blendUnit, - GetTexelOp(unit), tmp, - texUnit->EnvColor ); - } - else { - tmp_sz = i830SetBlend_GL1_2(i830, blendUnit, texUnit->EnvMode, - t->intel.image[0][0].internalFormat, - GetTexelOp(unit), tmp, - texUnit->EnvColor ); - } + tmp_sz = i830SetTexEnvCombine(i830, texUnit->_CurrentCombine, blendUnit, + GetTexelOp(unit), tmp, + texUnit->EnvColor ); if (last_stage) tmp[0] |= TEXOP_LAST_STAGE; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texstate.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texstate.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texstate.c 2004-07-22 08:52:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_texstate.c 2004-12-15 02:50:58.000000000 +0100 @@ -42,6 +42,19 @@ #include "i830_context.h" #include "i830_reg.h" +static const GLint initial_offsets[6][2] = { {0,0}, + {0,2}, + {1,0}, + {1,2}, + {1,1}, + {1,3} }; + +static const GLint step_offsets[6][2] = { {0,2}, + {0,2}, + {-1,2}, + {-1,2}, + {-1,1}, + {-1,1} }; #define I830_TEX_UNIT_ENABLED(unit) (1<intel.base.lastLevel; numLevels = lastLevel - firstLevel + 1; - /* Pitch would be subject to additional rules if texture memory were - * tiled. Currently it isn't. - */ - if (0) { - pitch = 128; - while (pitch < tObj->Image[0][firstLevel]->Width * t->intel.texelBytes) - pitch *= 2; - } - else { - pitch = tObj->Image[0][firstLevel]->Width * t->intel.texelBytes; - pitch = (pitch + 3) & ~3; - } - /* All images must be loaded at this pitch. Count the number of * lines required: */ - for ( total_height = i = 0 ; i < numLevels ; i++ ) { - t->intel.image[0][i].image = tObj->Image[0][firstLevel + i]; - if (!t->intel.image[0][i].image) - break; + switch (tObj->Target) { + case GL_TEXTURE_CUBE_MAP: { + const GLuint dim = tObj->Image[0][firstLevel]->Width; + GLuint face; + + pitch = dim * t->intel.texelBytes; + pitch *= 2; /* double pitch for cube layouts */ + pitch = (pitch + 3) & ~3; - t->intel.image[0][i].offset = total_height * pitch; - t->intel.image[0][i].internalFormat = baseImage->Format; - if (t->intel.image[0][i].image->IsCompressed) - { - if (t->intel.image[0][i].image->Height > 4) - total_height += t->intel.image[0][i].image->Height/4; - else - total_height += 1; - } - else - total_height += MAX2(2, t->intel.image[0][i].image->Height); + total_height = dim * 4; + + for ( face = 0 ; face < 6 ; face++) { + GLuint x = initial_offsets[face][0] * dim; + GLuint y = initial_offsets[face][1] * dim; + GLuint d = dim; + + t->intel.base.dirty_images[face] = ~0; + + assert(tObj->Image[face][firstLevel]->Width == dim); + assert(tObj->Image[face][firstLevel]->Height == dim); + + for (i = 0; i < numLevels; i++) { + t->intel.image[face][i].image = tObj->Image[face][firstLevel + i]; + if (!t->intel.image[face][i].image) { + fprintf(stderr, "no image %d %d\n", face, i); + break; /* can't happen */ + } + + t->intel.image[face][i].offset = + y * pitch + x * t->intel.texelBytes; + t->intel.image[face][i].internalFormat = baseImage->Format; + + d >>= 1; + x += step_offsets[face][0] * d; + y += step_offsets[face][1] * d; + } + } + break; + } + default: + pitch = tObj->Image[0][firstLevel]->Width * t->intel.texelBytes; + pitch = (pitch + 3) & ~3; + t->intel.base.dirty_images[0] = ~0; + + for ( total_height = i = 0 ; i < numLevels ; i++ ) { + t->intel.image[0][i].image = tObj->Image[0][firstLevel + i]; + if (!t->intel.image[0][i].image) + break; + + t->intel.image[0][i].offset = total_height * pitch; + t->intel.image[0][i].internalFormat = baseImage->Format; + if (t->intel.image[0][i].image->IsCompressed) + { + if (t->intel.image[0][i].image->Height > 4) + total_height += t->intel.image[0][i].image->Height/4; + else + total_height += 1; + } + else + total_height += MAX2(2, t->intel.image[0][i].image->Height); + } + break; } t->intel.Pitch = pitch; @@ -176,7 +222,8 @@ ((tObj->Image[0][firstLevel]->Width - 1) << TM0S1_WIDTH_SHIFT) | textureFormat); t->Setup[I830_TEXREG_TM0S2] = - (((pitch / 4) - 1) << TM0S2_PITCH_SHIFT); + (((pitch / 4) - 1) << TM0S2_PITCH_SHIFT) | + TM0S2_CUBE_FACE_ENA_MASK; t->Setup[I830_TEXREG_TM0S3] &= ~TM0S3_MAX_MIP_MASK; t->Setup[I830_TEXREG_TM0S3] &= ~TM0S3_MIN_MIP_MASK; t->Setup[I830_TEXREG_TM0S3] |= ((numLevels - 1)*4) << TM0S3_MIN_MIP_SHIFT; @@ -216,6 +263,7 @@ i830->state.Tex[unit][I830_TEXREG_TM0S4] = t->Setup[I830_TEXREG_TM0S4]; i830->state.Tex[unit][I830_TEXREG_MCS] = (t->Setup[I830_TEXREG_MCS] & ~MAP_UNIT_MASK); + i830->state.Tex[unit][I830_TEXREG_CUBE] = t->Setup[I830_TEXREG_CUBE]; i830->state.Tex[unit][I830_TEXREG_MCS] |= MAP_UNIT(unit); t->intel.dirty &= ~I830_UPLOAD_TEX(unit); @@ -267,9 +315,11 @@ mcs &= ~TEXCOORDS_ARE_NORMAL; mcs |= TEXCOORDS_ARE_IN_TEXELUNITS; - if (mcs != i830->state.Tex[unit][I830_TEXREG_MCS]) { + if ((mcs != i830->state.Tex[unit][I830_TEXREG_MCS]) + || (0 != i830->state.Tex[unit][I830_TEXREG_CUBE])) { I830_STATECHANGE(i830, I830_UPLOAD_TEX(unit)); i830->state.Tex[unit][I830_TEXREG_MCS] = mcs; + i830->state.Tex[unit][I830_TEXREG_CUBE] = 0; } return GL_TRUE; @@ -284,15 +334,61 @@ mcs &= ~TEXCOORDS_ARE_IN_TEXELUNITS; mcs |= TEXCOORDS_ARE_NORMAL; - if (mcs != i830->state.Tex[unit][I830_TEXREG_MCS]) { + if ((mcs != i830->state.Tex[unit][I830_TEXREG_MCS]) + || (0 != i830->state.Tex[unit][I830_TEXREG_CUBE])) { I830_STATECHANGE(i830, I830_UPLOAD_TEX(unit)); i830->state.Tex[unit][I830_TEXREG_MCS] = mcs; + i830->state.Tex[unit][I830_TEXREG_CUBE] = 0; } return GL_TRUE; } +static GLboolean enable_tex_cube( GLcontext *ctx, GLuint unit ) +{ + i830ContextPtr i830 = I830_CONTEXT(ctx); + struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; + struct gl_texture_object *tObj = texUnit->_Current; + i830TextureObjectPtr t = (i830TextureObjectPtr)tObj->DriverData; + GLuint mcs = i830->state.Tex[unit][I830_TEXREG_MCS]; + const GLuint cube = CUBE_NEGX_ENABLE | CUBE_POSX_ENABLE + | CUBE_NEGY_ENABLE | CUBE_POSY_ENABLE + | CUBE_NEGZ_ENABLE | CUBE_POSZ_ENABLE; + GLuint face; + + mcs &= ~TEXCOORDS_ARE_IN_TEXELUNITS; + mcs |= TEXCOORDS_ARE_NORMAL; + + if ((mcs != i830->state.Tex[unit][I830_TEXREG_MCS]) + || (cube != i830->state.Tex[unit][I830_TEXREG_CUBE])) { + I830_STATECHANGE(i830, I830_UPLOAD_TEX(unit)); + i830->state.Tex[unit][I830_TEXREG_MCS] = mcs; + i830->state.Tex[unit][I830_TEXREG_CUBE] = cube; + } + + /* Upload teximages (not pipelined) + */ + if ( t->intel.base.dirty_images[0] || t->intel.base.dirty_images[1] || + t->intel.base.dirty_images[2] || t->intel.base.dirty_images[3] || + t->intel.base.dirty_images[4] || t->intel.base.dirty_images[5] ) { + i830SetTexImages( i830, tObj ); + } + + /* upload (per face) */ + for (face = 0; face < 6; face++) { + if (t->intel.base.dirty_images[face]) { + if (!intelUploadTexImages( &i830->intel, &t->intel, face )) { + return GL_FALSE; + } + } + } + + + return GL_TRUE; +} + + static GLboolean disable_tex( GLcontext *ctx, GLuint unit ) { i830ContextPtr i830 = I830_CONTEXT(ctx); @@ -324,20 +420,21 @@ INTEL_CONTEXT(ctx)->intelScreen->textureSize < 2048 * 1024) return GL_FALSE; - if (texUnit->_ReallyEnabled == TEXTURE_1D_BIT || - texUnit->_ReallyEnabled == TEXTURE_2D_BIT) { + switch(texUnit->_ReallyEnabled) { + case TEXTURE_1D_BIT: + case TEXTURE_2D_BIT: return (enable_tex_common( ctx, unit ) && enable_tex_2d( ctx, unit )); - } - else if (texUnit->_ReallyEnabled == TEXTURE_RECT_BIT) { + case TEXTURE_RECT_BIT: return (enable_tex_common( ctx, unit ) && enable_tex_rect( ctx, unit )); - } - else if (texUnit->_ReallyEnabled) { - return GL_FALSE; - } - else { + case TEXTURE_CUBE_BIT: + return (enable_tex_common( ctx, unit ) && + enable_tex_cube( ctx, unit )); + case 0: return disable_tex( ctx, unit ); + default: + return GL_FALSE; } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_vtbl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_vtbl.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_vtbl.c 2004-09-02 04:06:03.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i830_vtbl.c 2004-12-15 02:50:58.000000000 +0100 @@ -87,6 +87,10 @@ intel->coloroffset = 3; } + if (index & _TNL_BIT_POINTSIZE) { + EMIT_ATTR( _TNL_ATTRIB_POINTSIZE, EMIT_1F, VFT0_POINT_WIDTH ); + } + EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_BGRA, VFT0_DIFFUSE ); intel->specoffset = 0; @@ -117,11 +121,15 @@ switch (sz) { case 1: case 2: - case 3: /* XXX: fix for CUBE/VOLUME textures */ emit = EMIT_2F; sz = 2; mcs |= TEXCOORDTYPE_CARTESIAN; break; + case 3: + emit = EMIT_3F; + sz = 3; + mcs |= TEXCOORDTYPE_VECTOR; + break; case 4: emit = EMIT_3F_XYW; sz = 3; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/i915_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/i915_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/i915_context.c 2004-07-22 08:52:16.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/i915_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -45,14 +45,9 @@ * Mesa's Driver Functions ***************************************/ - static const char * const card_extensions[] = { "GL_ARB_fragment_program", - "GL_ARB_texture_cube_map", - "GL_EXT_blend_equation_separate", - "GL_ATI_blend_equation_separate", - "GL_ARB_point_parameters", NULL }; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/i915/intel_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/i915/intel_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/i915/intel_context.c 2004-07-22 08:52:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/i915/intel_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -72,7 +72,7 @@ * Mesa's Driver Functions ***************************************/ -#define DRIVER_DATE "20040528" +#define DRIVER_DATE "20040919" const GLubyte *intelGetString( GLcontext *ctx, GLenum name ) { @@ -125,58 +125,60 @@ -/* Extension strings exported by the intel driver. +/** + * Extension strings exported by the intel driver. * - * NOTE: See implementation of glGetString in each hw_context.c file: + * \note + * It appears that ARB_texture_env_crossbar and NV_blend_square have + * "disappeared" compared to the old i830-specific driver. + * + * \note + * See implementation of \c glGetString in each hw_context.c file: * This set of extensions is overridden and many are not actually * exported to the driver. They are however enabled internally as * Mesa requires this when calculating things like GL version number. */ static const char * const card_extensions[] = { - "GL_APPLE_client_storage", "GL_ARB_multisample", "GL_ARB_multitexture", + "GL_ARB_point_parameters", "GL_ARB_texture_border_clamp", + "GL_ARB_texture_cube_map", "GL_ARB_texture_compression", "GL_ARB_texture_env_add", "GL_ARB_texture_env_combine", "GL_ARB_texture_env_dot3", "GL_ARB_texture_mirrored_repeat", + "GL_ARB_texture_rectangle", + "GL_ARB_vertex_buffer_object", "GL_ARB_vertex_program", + "GL_ARB_window_pos", + + "GL_EXT_abgr", + "GL_EXT_bgra", "GL_EXT_blend_color", + "GL_EXT_blend_equation_separate", "GL_EXT_blend_func_separate", "GL_EXT_blend_minmax", "GL_EXT_blend_subtract", "GL_EXT_fog_coord", + "GL_EXT_multi_draw_arrays", "GL_EXT_secondary_color", "GL_EXT_stencil_wrap", "GL_EXT_texture_edge_clamp", - "GL_EXT_texture_env_add", "GL_EXT_texture_env_combine", "GL_EXT_texture_env_dot3", "GL_EXT_texture_filter_anisotropic", "GL_EXT_texture_lod_bias", - "GL_IBM_texture_mirrored_repeat", - "GL_INGR_blend_func_separate", + + "GL_3DFX_texture_compression_FXT1", + "GL_APPLE_client_storage", "GL_MESA_pack_invert", "GL_MESA_ycbcr_texture", - "GL_NV_texture_rectangle", "GL_NV_vertex_program", - -/* New in final: - */ - "GL_ARB_vertex_buffer_object", - "GL_ARB_window_pos", - "GL_EXT_multi_draw_arrays", - "GL_EXT_abgr", - "GL_EXT_bgra", - - + "GL_NV_vertex_program1_1", "GL_SGIS_generate_mipmap", - "GL_SGIS_texture_border_clamp", - "GL_SGIS_texture_edge_clamp", - "GL_3DFX_texture_compression_FXT1", NULL }; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/mga/mga_xmesa.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/mga/mga_xmesa.c --- xc/extras/Mesa/src/mesa/drivers/dri/mga/mga_xmesa.c 2004-07-22 08:51:39.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/mga/mga_xmesa.c 2004-12-15 02:50:58.000000000 +0100 @@ -59,6 +59,8 @@ #include "utils.h" #include "vblank.h" +#include "extensions.h" + #include "GL/internal/dri_interface.h" /* MGA configuration @@ -74,8 +76,12 @@ DRI_CONF_TEXTURE_DEPTH(DRI_CONF_TEXTURE_DEPTH_FB) DRI_CONF_COLOR_REDUCTION(DRI_CONF_COLOR_REDUCTION_DITHER) DRI_CONF_SECTION_END + DRI_CONF_SECTION_SOFTWARE + DRI_CONF_ARB_VERTEX_PROGRAM(true) + DRI_CONF_NV_VERTEX_PROGRAM(true) + DRI_CONF_SECTION_END DRI_CONF_END; -static const GLuint __driNConfigOptions = 3; +static const GLuint __driNConfigOptions = 5; #ifdef USE_NEW_INTERFACE static PFNGLXCREATECONTEXTMODES create_context_modes = NULL; @@ -420,6 +426,8 @@ &_tnl_fog_coordinate_stage, &_tnl_texgen_stage, &_tnl_texture_transform_stage, + &_tnl_vertex_program_stage, + /* REMOVE: point attenuation stage */ #if 0 &_mga_render_stage, /* ADD: unclipped rastersetup-to-dma */ @@ -449,8 +457,10 @@ { "GL_ARB_multisample", "GL_ARB_texture_compression", + "GL_ARB_texture_rectangle", "GL_EXT_blend_logic_op", "GL_EXT_fog_coord", + "GL_EXT_multi_draw_arrays", /* paletted_textures currently doesn't work, but we could fix them later */ #if 0 "GL_EXT_shared_texture_palette", @@ -458,10 +468,8 @@ #endif "GL_EXT_secondary_color", "GL_EXT_stencil_wrap", - "GL_EXT_texture_rectangle", "GL_MESA_ycbcr_texture", "GL_SGIS_generate_mipmap", - "GL_SGIS_texture_lod", NULL }; @@ -666,6 +674,16 @@ driInitExtensions( ctx, g400_extensions, GL_FALSE ); } + if ( driQueryOptionb( &mmesa->optionCache, "arb_vertex_program" ) ) { + _mesa_enable_extension( ctx, "GL_ARB_vertex_program" ); + } + + if ( driQueryOptionb( &mmesa->optionCache, "nv_vertex_program" ) ) { + _mesa_enable_extension( ctx, "GL_NV_vertex_program" ); + _mesa_enable_extension( ctx, "GL_NV_vertex_program1_1" ); + } + + /* XXX these should really go right after _mesa_init_driver_functions() */ mgaDDInitStateFuncs( ctx ); mgaDDInitSpanFuncs( ctx ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/Makefile x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/Makefile --- xc/extras/Mesa/src/mesa/drivers/dri/r128/Makefile 2004-06-16 11:18:13.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/Makefile 2004-12-15 02:50:58.000000000 +0100 @@ -28,8 +28,7 @@ r128_tris.c \ r128_ioctl.c \ r128_span.c \ - r128_texmem.c \ - r128_vb.c + r128_texmem.c C_SOURCES = \ $(COMMON_SOURCES) \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.c 2004-06-16 11:18:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -56,7 +56,6 @@ #include "r128_span.h" #include "r128_tex.h" #include "r128_tris.h" -#include "r128_vb.h" #include "vblank.h" #include "utils.h" @@ -180,6 +179,7 @@ rmesa->RenderIndex = -1; /* Impossible value */ rmesa->vert_buf = NULL; rmesa->num_verts = 0; + rmesa->tnl_state = ~0; /* Set the maximum texture size small enough that we can guarentee that * all texture units can bind a maximal texture and have them both in @@ -243,7 +243,6 @@ if (sPriv->drmMinor >= 4) _mesa_enable_extension( ctx, "GL_MESA_ycbcr_texture" ); - r128InitVB( ctx ); r128InitTriFuncs( ctx ); r128DDInitStateFuncs( ctx ); r128DDInitSpanFuncs( ctx ); @@ -280,8 +279,6 @@ _ac_DestroyContext( rmesa->glCtx ); _swrast_DestroyContext( rmesa->glCtx ); - r128FreeVB( rmesa->glCtx ); - /* free the Mesa context */ rmesa->glCtx->DriverCtx = NULL; _mesa_destroy_context(rmesa->glCtx); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.h --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.h 2004-06-16 11:18:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_context.h 2004-12-15 02:50:58.000000000 +0100 @@ -43,6 +43,7 @@ #include "r128_drm.h" #include "mtypes.h" +#include "tnl/t_vertex.h" #include "r128_reg.h" @@ -81,6 +82,7 @@ #define R128_FALLBACK_SEP_SPECULAR 0x0080 #define R128_FALLBACK_BLEND_EQ 0x0100 #define R128_FALLBACK_BLEND_FUNC 0x0200 +#define R128_FALLBACK_PROJTEX 0x0400 /* Use the templated vertex format: @@ -122,18 +124,21 @@ GLuint dirty; /* Hardware state to be updated */ drm_r128_context_regs_t setup; + /* Vertex state */ + GLuint vertex_size; + GLuint vertex_format; + struct tnl_attr_map vertex_attrs[VERT_ATTRIB_MAX]; + GLuint vertex_attr_count; + char *verts; /* points to tnl->clipspace.vertex_buf */ + GLuint num_verts; + int coloroffset, specoffset; + int tnl_state; /* tnl->render_inputs for this _tnl_install_attrs */ + GLuint NewGLState; GLuint Fallback; - GLuint SetupIndex; - GLuint SetupNewInputs; GLuint RenderIndex; GLfloat hw_viewport[16]; GLfloat depth_scale; - GLuint vertex_size; - GLuint vertex_stride_shift; - GLuint vertex_format; - GLuint num_verts; - GLubyte *verts; uint32_t ClearColor; /* Color used to clear color buffer */ uint32_t ClearDepth; /* Value used to clear depth buffer */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_dd.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_dd.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_dd.c 2004-06-16 11:18:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_dd.c 2004-12-15 02:50:58.000000000 +0100 @@ -36,14 +36,14 @@ #include "r128_context.h" #include "r128_ioctl.h" #include "r128_state.h" -#include "r128_vb.h" #include "r128_dd.h" +#include "swrast/swrast.h" #include "context.h" #include "utils.h" -#define DRIVER_DATE "20030328" +#define DRIVER_DATE "20041001" /* Return the width and height of the current color buffer. diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.c 2004-06-16 11:18:12.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.c 2004-12-15 02:50:58.000000000 +0100 @@ -43,6 +43,7 @@ #include "swrast/swrast.h" #include "vblank.h" +#include "mmio.h" #define R128_TIMEOUT 2048 #define R128_IDLE_RETRY 32 @@ -225,12 +226,11 @@ static int r128WaitForFrameCompletion( r128ContextPtr rmesa ) { unsigned char *R128MMIO = rmesa->r128Screen->mmio.map; - uint32_t frame; int i; int wait = 0; while ( 1 ) { - frame = *(volatile unsigned int *)(R128MMIO + R128_LAST_FRAME_REG); + uint32_t frame = read_MMIO_LE32( R128MMIO, R128_LAST_FRAME_REG ); if ( rmesa->sarea->last_frame - frame <= R128_MAX_OUTSTANDING ) { break; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.h --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.h 2004-06-16 11:18:12.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_ioctl.h 2004-12-15 02:50:58.000000000 +0100 @@ -47,9 +47,11 @@ extern drmBufPtr r128GetBufferLocked( r128ContextPtr rmesa ); extern void r128FlushVerticesLocked( r128ContextPtr rmesa ); -static __inline void *r128AllocDmaLow( r128ContextPtr rmesa, int bytes ) +static __inline void *r128AllocDmaLow( r128ContextPtr rmesa, int count, + int vert_size ) { uint32_t *head; + int bytes = count * vert_size; if ( !rmesa->vert_buf ) { LOCK_HARDWARE( rmesa ); @@ -64,6 +66,8 @@ head = (uint32_t *)((char *)rmesa->vert_buf->address + rmesa->vert_buf->used); rmesa->vert_buf->used += bytes; + rmesa->num_verts += count; + return head; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_lock.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_lock.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_lock.c 2004-06-16 11:18:12.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_lock.c 2004-12-15 02:50:58.000000000 +0100 @@ -104,7 +104,7 @@ r128UpdatePageFlipping( rmesa ); rmesa->lastStamp = dPriv->lastStamp; rmesa->new_state |= R128_NEW_CLIP; - rmesa->SetupNewInputs = ~0; + rmesa->tnl_state = ~0; } rmesa->dirty |= R128_UPLOAD_CONTEXT | R128_UPLOAD_CLIPRECTS; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_screen.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_screen.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_screen.c 2004-07-22 08:51:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_screen.c 2004-12-15 02:50:58.000000000 +0100 @@ -38,7 +38,6 @@ #include "r128_context.h" #include "r128_ioctl.h" #include "r128_tris.h" -#include "r128_vb.h" #include "context.h" #include "imports.h" diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_state.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_state.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_state.c 2004-06-16 11:18:12.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_state.c 2004-12-15 02:50:58.000000000 +0100 @@ -38,7 +38,6 @@ #include "r128_state.h" #include "r128_ioctl.h" #include "r128_tris.h" -#include "r128_vb.h" #include "r128_tex.h" #include "context.h" diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tex.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tex.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tex.c 2004-07-22 08:51:43.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tex.c 2004-12-15 02:50:58.000000000 +0100 @@ -36,7 +36,6 @@ #include "r128_context.h" #include "r128_state.h" #include "r128_ioctl.h" -#include "r128_vb.h" #include "r128_tris.h" #include "r128_tex.h" #include "r128_texobj.h" diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texmem.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texmem.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texmem.c 2004-06-16 11:18:12.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texmem.c 2004-12-15 02:50:58.000000000 +0100 @@ -36,7 +36,6 @@ #include "r128_context.h" #include "r128_state.h" #include "r128_ioctl.h" -#include "r128_vb.h" #include "r128_tris.h" #include "r128_tex.h" diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texstate.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texstate.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texstate.c 2004-08-28 06:27:25.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_texstate.c 2004-12-15 02:50:58.000000000 +0100 @@ -42,7 +42,6 @@ #include "r128_context.h" #include "r128_state.h" #include "r128_ioctl.h" -#include "r128_vb.h" #include "r128_tris.h" #include "r128_tex.h" diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tris.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tris.c --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tris.c 2004-07-22 08:51:43.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_tris.c 2004-12-15 02:50:58.000000000 +0100 @@ -47,7 +47,6 @@ #include "r128_tris.h" #include "r128_state.h" #include "r128_tex.h" -#include "r128_vb.h" #include "r128_ioctl.h" static const GLuint hw_prim[GL_POLYGON+1] = { @@ -70,84 +69,27 @@ /*********************************************************************** * Emit primitives as inline vertices * ***********************************************************************/ + +#define HAVE_QUADS 0 +#define HAVE_LINES 1 +#define HAVE_POINTS 1 +#define HAVE_LE32_VERTS 1 +#define CTX_ARG r128ContextPtr rmesa +#define CTX_ARG2 rmesa +#define GET_VERTEX_DWORDS() rmesa->vertex_size +#define ALLOC_VERTS( n, size ) r128AllocDmaLow( rmesa, (n), (size) * 4 ) +#undef LOCAL_VARS +#define LOCAL_VARS \ + r128ContextPtr rmesa = R128_CONTEXT(ctx); \ + const char *vertptr = rmesa->verts; +#define VERT(x) (r128Vertex *)(vertptr + ((x) * vertsize * 4)) +#define VERTEX r128Vertex +#undef TAG +#define TAG(x) r128_##x +#include "tnl_dd/t_dd_triemit.h" +#undef TAG +#undef LOCAL_VARS -#if defined(USE_X86_ASM) -#define COPY_DWORDS( j, vb, vertsize, v ) \ -do { \ - int __tmp; \ - __asm__ __volatile__( "rep ; movsl" \ - : "=%c" (j), "=D" (vb), "=S" (__tmp) \ - : "0" (vertsize), \ - "D" ((long)vb), \ - "S" ((long)v) ); \ -} while (0) -#else -#define COPY_DWORDS( j, vb, vertsize, v ) \ -do { \ - for ( j = 0 ; j < vertsize ; j++ ) \ - vb[j] = CPU_TO_LE32(((GLuint *)v)[j]); \ - vb += vertsize; \ -} while (0) -#endif - -static __inline void r128_draw_quad( r128ContextPtr rmesa, - r128VertexPtr v0, - r128VertexPtr v1, - r128VertexPtr v2, - r128VertexPtr v3 ) -{ - GLuint vertsize = rmesa->vertex_size; - GLuint *vb = (GLuint *)r128AllocDmaLow( rmesa, 6 * vertsize * 4 ); - GLuint j; - - rmesa->num_verts += 6; - COPY_DWORDS( j, vb, vertsize, v0 ); - COPY_DWORDS( j, vb, vertsize, v1 ); - COPY_DWORDS( j, vb, vertsize, v3 ); - COPY_DWORDS( j, vb, vertsize, v1 ); - COPY_DWORDS( j, vb, vertsize, v2 ); - COPY_DWORDS( j, vb, vertsize, v3 ); -} - - -static __inline void r128_draw_triangle( r128ContextPtr rmesa, - r128VertexPtr v0, - r128VertexPtr v1, - r128VertexPtr v2 ) -{ - GLuint vertsize = rmesa->vertex_size; - GLuint *vb = (GLuint *)r128AllocDmaLow( rmesa, 3 * vertsize * 4 ); - GLuint j; - - rmesa->num_verts += 3; - COPY_DWORDS( j, vb, vertsize, v0 ); - COPY_DWORDS( j, vb, vertsize, v1 ); - COPY_DWORDS( j, vb, vertsize, v2 ); -} - -static __inline void r128_draw_line( r128ContextPtr rmesa, - r128VertexPtr v0, - r128VertexPtr v1 ) -{ - GLuint vertsize = rmesa->vertex_size; - GLuint *vb = (GLuint *)r128AllocDmaLow( rmesa, 2 * vertsize * 4 ); - GLuint j; - - rmesa->num_verts += 2; - COPY_DWORDS( j, vb, vertsize, v0 ); - COPY_DWORDS( j, vb, vertsize, v1 ); -} - -static __inline void r128_draw_point( r128ContextPtr rmesa, - r128VertexPtr v0 ) -{ - int vertsize = rmesa->vertex_size; - GLuint *vb = (GLuint *)r128AllocDmaLow( rmesa, vertsize * 4 ); - int j; - - rmesa->num_verts += 1; - COPY_DWORDS( j, vb, vertsize, v0 ); -} /*********************************************************************** * Macros for t_dd_tritmp.h to draw basic primitives * @@ -158,7 +100,7 @@ if (DO_FALLBACK) \ rmesa->draw_tri( rmesa, a, b, c ); \ else \ - r128_draw_triangle( rmesa, a, b, c ); \ + r128_triangle( rmesa, a, b, c ); \ } while (0) #define QUAD( a, b, c, d ) \ @@ -167,7 +109,7 @@ rmesa->draw_tri( rmesa, a, b, d ); \ rmesa->draw_tri( rmesa, b, c, d ); \ } else \ - r128_draw_quad( rmesa, a, b, c, d ); \ + r128_quad( rmesa, a, b, c, d ); \ } while (0) #define LINE( v0, v1 ) \ @@ -175,7 +117,7 @@ if (DO_FALLBACK) \ rmesa->draw_line( rmesa, v0, v1 ); \ else \ - r128_draw_line( rmesa, v0, v1 ); \ + r128_line( rmesa, v0, v1 ); \ } while (0) #define POINT( v0 ) \ @@ -183,7 +125,7 @@ if (DO_FALLBACK) \ rmesa->draw_point( rmesa, v0 ); \ else \ - r128_draw_point( rmesa, v0 ); \ + r128_point( rmesa, v0 ); \ } while (0) @@ -247,35 +189,40 @@ #define VERT_SET_SPEC( v0, c ) \ do { \ if (havespec) { \ - UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.red, (c)[0]); \ - UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.green, (c)[1]); \ - UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.blue, (c)[2]); \ + r128_color_t *spec = (r128_color_t *)&((v0)->ui[specoffset]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->red, (c)[0]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->green, (c)[1]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->blue, (c)[2]); \ } \ } while (0) #define VERT_COPY_SPEC( v0, v1 ) \ do { \ if (havespec) { \ - v0->v.specular.red = v1->v.specular.red; \ - v0->v.specular.green = v1->v.specular.green; \ - v0->v.specular.blue = v1->v.specular.blue; \ + r128_color_t *spec0 = (r128_color_t *)&((v0)->ui[specoffset]); \ + r128_color_t *spec1 = (r128_color_t *)&((v1)->ui[specoffset]); \ + spec0->red = spec1->red; \ + spec0->green = spec1->green; \ + spec0->blue = spec1->blue; \ } \ } while (0) -/* These don't need LE32_TO_CPU() as they used to save and restore +/* These don't need LE32_TO_CPU() as they are used to save and restore * colors which are already in the correct format. */ #define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[coloroffset] #define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx] -#define VERT_SAVE_SPEC( idx ) if (havespec) spec[idx] = v[idx]->ui[5] -#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[5] = spec[idx] +#define VERT_SAVE_SPEC( idx ) if (havespec) spec[idx] = v[idx]->ui[specoffset] +#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[specoffset] = spec[idx] #define LOCAL_VARS(n) \ r128ContextPtr rmesa = R128_CONTEXT(ctx); \ GLuint color[n], spec[n]; \ - GLuint coloroffset = (rmesa->vertex_size == 4 ? 3 : 4); \ - GLboolean havespec = (rmesa->vertex_size == 4 ? 0 : 1); \ - (void) color; (void) spec; (void) coloroffset; (void) havespec; + GLuint coloroffset = rmesa->coloroffset; \ + GLuint specoffset = rmesa->specoffset; \ + GLboolean havespec = (rmesa->specoffset != 0); \ + (void) color; (void) spec; (void) specoffset; \ + (void) coloroffset; (void) havespec; /*********************************************************************** * Helpers for rendering unfilled primitives * @@ -400,9 +347,10 @@ { GLcontext *ctx = rmesa->glCtx; SWvertex v[3]; - r128_translate_vertex( ctx, v0, &v[0] ); - r128_translate_vertex( ctx, v1, &v[1] ); - r128_translate_vertex( ctx, v2, &v[2] ); + _swsetup_Translate( ctx, v0, &v[0] ); + _swsetup_Translate( ctx, v1, &v[1] ); + _swsetup_Translate( ctx, v2, &v[2] ); + /* XXX: SpanRenderStart */ _swrast_Triangle( ctx, &v[0], &v[1], &v[2] ); } @@ -414,8 +362,8 @@ { GLcontext *ctx = rmesa->glCtx; SWvertex v[2]; - r128_translate_vertex( ctx, v0, &v[0] ); - r128_translate_vertex( ctx, v1, &v[1] ); + _swsetup_Translate( ctx, v0, &v[0] ); + _swsetup_Translate( ctx, v1, &v[1] ); _swrast_Line( ctx, &v[0], &v[1] ); } @@ -426,7 +374,7 @@ { GLcontext *ctx = rmesa->glCtx; SWvertex v[1]; - r128_translate_vertex( ctx, v0, &v[0] ); + _swsetup_Translate( ctx, v0, &v[0] ); _swrast_Point( ctx, &v[0] ); } @@ -436,16 +384,15 @@ /* Render unclipped begin/end objects */ /**********************************************************************/ -#define VERT(x) (r128Vertex *)(r128verts + (x * vertsize * sizeof(int))) #define RENDER_POINTS( start, count ) \ for ( ; start < count ; start++) \ - r128_draw_point( rmesa, VERT(start) ) + r128_point( rmesa, VERT(start) ) #define RENDER_LINE( v0, v1 ) \ - r128_draw_line( rmesa, VERT(v0), VERT(v1) ) + r128_line( rmesa, VERT(v0), VERT(v1) ) #define RENDER_TRI( v0, v1, v2 ) \ - r128_draw_triangle( rmesa, VERT(v0), VERT(v1), VERT(v2) ) + r128_triangle( rmesa, VERT(v0), VERT(v1), VERT(v2) ) #define RENDER_QUAD( v0, v1, v2, v3 ) \ - r128_draw_quad( rmesa, VERT(v0), VERT(v1), VERT(v2), VERT(v3) ) + r128_quad( rmesa, VERT(v0), VERT(v1), VERT(v2), VERT(v3) ) #define INIT(x) do { \ if (0) fprintf(stderr, "%s\n", __FUNCTION__); \ r128RenderPrimitive( ctx, x ); \ @@ -454,7 +401,7 @@ #define LOCAL_VARS \ r128ContextPtr rmesa = R128_CONTEXT(ctx); \ const GLuint vertsize = rmesa->vertex_size; \ - const char *r128verts = (char *)rmesa->verts; \ + const char *vertptr = (char *)rmesa->verts; \ const GLuint * const elt = TNL_CONTEXT(ctx)->vb.Elts; \ (void) elt; #define RESET_STIPPLE @@ -471,72 +418,15 @@ /**********************************************************************/ -/* Render clipped primitives */ -/**********************************************************************/ - -static void r128RenderClippedPoly( GLcontext *ctx, const GLuint *elts, - GLuint n ) -{ - TNLcontext *tnl = TNL_CONTEXT(ctx); - struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; - - /* Render the new vertices as an unclipped polygon. - */ - { - GLuint *tmp = VB->Elts; - VB->Elts = (GLuint *)elts; - tnl->Driver.Render.PrimTabElts[GL_POLYGON]( ctx, 0, n, PRIM_BEGIN|PRIM_END ); - VB->Elts = tmp; - } -} - -static void r128RenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj ) -{ - TNLcontext *tnl = TNL_CONTEXT(ctx); - tnl->Driver.Render.Line( ctx, ii, jj ); -} - -static void r128FastRenderClippedPoly( GLcontext *ctx, const GLuint *elts, - GLuint n ) -{ - r128ContextPtr rmesa = R128_CONTEXT( ctx ); - GLuint vertsize = rmesa->vertex_size; - GLuint *vb = r128AllocDmaLow( rmesa, (n-2) * 3 * 4 * vertsize ); - GLubyte *r128verts = (GLubyte *)rmesa->verts; - const GLuint *start = (const GLuint *)VERT(elts[0]); - int i,j; - - rmesa->num_verts += (n-2) * 3; - - for (i = 2 ; i < n ; i++) { - COPY_DWORDS( j, vb, vertsize, (r128VertexPtr) VERT(elts[i-1]) ); - COPY_DWORDS( j, vb, vertsize, (r128VertexPtr) VERT(elts[i]) ); - COPY_DWORDS( j, vb, vertsize, (r128VertexPtr) start ); - } -} - - - - -/**********************************************************************/ /* Choose render functions */ /**********************************************************************/ -#define _R128_NEW_RENDER_STATE (_DD_NEW_LINE_STIPPLE | \ - _DD_NEW_LINE_SMOOTH | \ - _DD_NEW_POINT_SMOOTH | \ - _DD_NEW_TRI_SMOOTH | \ - _DD_NEW_TRI_UNFILLED | \ - _DD_NEW_TRI_LIGHT_TWOSIDE | \ - _DD_NEW_TRI_OFFSET) \ - - #define POINT_FALLBACK (DD_POINT_SMOOTH) #define LINE_FALLBACK (DD_LINE_STIPPLE|DD_LINE_SMOOTH) #define TRI_FALLBACK (DD_TRI_SMOOTH) #define ANY_FALLBACK_FLAGS (POINT_FALLBACK|LINE_FALLBACK|TRI_FALLBACK) #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) - +#define _R128_NEW_RENDER_STATE (ANY_FALLBACK_FLAGS | ANY_RASTER_FLAGS) static void r128ChooseRenderState(GLcontext *ctx) { @@ -545,9 +435,9 @@ GLuint index = 0; if (flags & (ANY_RASTER_FLAGS|ANY_FALLBACK_FLAGS)) { - rmesa->draw_point = r128_draw_point; - rmesa->draw_line = r128_draw_line; - rmesa->draw_tri = r128_draw_triangle; + rmesa->draw_point = r128_point; + rmesa->draw_line = r128_line; + rmesa->draw_tri = r128_triangle; if (flags & ANY_RASTER_FLAGS) { if (flags & DD_TRI_LIGHT_TWOSIDE) index |= R128_TWOSIDE_BIT; @@ -569,19 +459,18 @@ TNLcontext *tnl = TNL_CONTEXT(ctx); tnl->Driver.Render.Points = rast_tab[index].points; tnl->Driver.Render.Line = rast_tab[index].line; + tnl->Driver.Render.ClippedLine = rast_tab[index].line; tnl->Driver.Render.Triangle = rast_tab[index].triangle; tnl->Driver.Render.Quad = rast_tab[index].quad; if (index == 0) { tnl->Driver.Render.PrimTabVerts = r128_render_tab_verts; tnl->Driver.Render.PrimTabElts = r128_render_tab_elts; - tnl->Driver.Render.ClippedLine = rast_tab[index].line; - tnl->Driver.Render.ClippedPolygon = r128FastRenderClippedPoly; + tnl->Driver.Render.ClippedPolygon = r128_fast_clipped_poly; } else { tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts; tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts; - tnl->Driver.Render.ClippedLine = r128RenderClippedLine; - tnl->Driver.Render.ClippedPolygon = r128RenderClippedPoly; + tnl->Driver.Render.ClippedPolygon = _tnl_RenderClippedPolygon; } rmesa->RenderIndex = index; @@ -600,9 +489,6 @@ r128DDUpdateHWState( ctx ); if (!rmesa->Fallback && rmesa->NewGLState) { - if (rmesa->NewGLState & _R128_NEW_VERTEX_STATE) - r128ChooseVertexState( ctx ); - if (rmesa->NewGLState & _R128_NEW_RENDER_STATE) r128ChooseRenderState( ctx ); @@ -657,13 +543,120 @@ r128RasterPrimitive( ctx, hw ); } +#define EMIT_ATTR( ATTR, STYLE, VF, SIZE ) \ +do { \ + rmesa->vertex_attrs[rmesa->vertex_attr_count].attrib = (ATTR); \ + rmesa->vertex_attrs[rmesa->vertex_attr_count].format = (STYLE); \ + rmesa->vertex_attr_count++; \ + vc_frmt |= (VF); \ + offset += (SIZE); \ +} while (0) + +#define EMIT_PAD( SIZE ) \ +do { \ + rmesa->vertex_attrs[rmesa->vertex_attr_count].attrib = 0; \ + rmesa->vertex_attrs[rmesa->vertex_attr_count].format = EMIT_PAD; \ + rmesa->vertex_attrs[rmesa->vertex_attr_count].offset = (SIZE); \ + rmesa->vertex_attr_count++; \ + offset += (SIZE); \ +} while (0) static void r128RenderStart( GLcontext *ctx ) { - /* Check for projective texturing. Make sure all texcoord - * pointers point to something. (fix in mesa?) + r128ContextPtr rmesa = R128_CONTEXT(ctx); + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *VB = &tnl->vb; + GLuint index = tnl->render_inputs; + GLuint vc_frmt = 0; + GLboolean fallback_projtex = GL_FALSE; + GLuint offset = 0; + + /* Important: */ + VB->AttribPtr[VERT_ATTRIB_POS] = VB->NdcPtr; + rmesa->vertex_attr_count = 0; + rmesa->specoffset = 0; + + /* EMIT_ATTR's must be in order as they tell t_vertex.c how to + * build up a hardware vertex. */ - r128CheckTexSizes( ctx ); + if ( index & _TNL_BITS_TEX_ANY ) + EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, R128_CCE_VC_FRMT_RHW, 16 ); + else + EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_3F_VIEWPORT, 0, 12 ); + + rmesa->coloroffset = offset; +#if MESA_LITTLE_ENDIAN + EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_BGRA, + R128_CCE_VC_FRMT_DIFFUSE_ARGB, 4 ); +#else + EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_ARGB, + R128_CCE_VC_FRMT_DIFFUSE_ARGB, 4 ); +#endif + + if ( index & (_TNL_BIT_COLOR1|_TNL_BIT_FOG) ) { +#if MESA_LITTLE_ENDIAN + if ( index & _TNL_BIT_COLOR1) { + rmesa->specoffset = offset; + EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_RGB, + R128_CCE_VC_FRMT_SPEC_FRGB, 3 ); + } else + EMIT_PAD( 3 ); + + if (index & _TNL_BIT_FOG) + EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1UB_1F, R128_CCE_VC_FRMT_SPEC_FRGB, + 1 ); + else + EMIT_PAD( 1 ); +#else + if (index & _TNL_BIT_FOG) + EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1UB_1F, R128_CCE_VC_FRMT_SPEC_FRGB, + 1 ); + else + EMIT_PAD( 1 ); + + if ( index & _TNL_BIT_COLOR1) { + rmesa->specoffset = offset; + EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_RGB, + R128_CCE_VC_FRMT_SPEC_FRGB, 3 ); + } else + EMIT_PAD( 3 ); +#endif + } + + if ( index & _TNL_BIT_TEX(0) ) { + if ( VB->TexCoordPtr[0]->size > 2 ) + fallback_projtex = GL_TRUE; + EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, R128_CCE_VC_FRMT_S_T, 8 ); + if ( index & _TNL_BIT_TEX(1) ) { + if ( VB->TexCoordPtr[1]->size > 2 ) + fallback_projtex = GL_TRUE; + EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, R128_CCE_VC_FRMT_S2_T2, 8 ); + } + } else if ( index & _TNL_BIT_TEX(1) ) { + if ( VB->TexCoordPtr[1]->size > 2 ) + fallback_projtex = GL_TRUE; + EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, R128_CCE_VC_FRMT_S_T, 8 ); + } + + /* projective textures are not supported by the hardware */ + FALLBACK( rmesa, R128_FALLBACK_TEXTURE, fallback_projtex ); + + /* Only need to change the vertex emit code if there has been a + * statechange to a TNL index. + */ + if ( index != rmesa->tnl_state ) { + FLUSH_BATCH( rmesa ); + rmesa->dirty |= R128_UPLOAD_CONTEXT; + + rmesa->vertex_size = + _tnl_install_attrs( ctx, + rmesa->vertex_attrs, + rmesa->vertex_attr_count, + rmesa->hw_viewport, 0 ); + rmesa->vertex_size >>= 2; + + rmesa->vertex_format = vc_frmt; + } } static void r128RenderFinish( GLcontext *ctx ) @@ -698,9 +691,19 @@ tnl->Driver.Render.Start = r128RenderStart; tnl->Driver.Render.PrimitiveNotify = r128RenderPrimitive; tnl->Driver.Render.Finish = r128RenderFinish; - tnl->Driver.Render.BuildVertices = r128BuildVertices; - rmesa->NewGLState |= (_R128_NEW_RENDER_STATE| - _R128_NEW_VERTEX_STATE); + + tnl->Driver.Render.BuildVertices = _tnl_build_vertices; + tnl->Driver.Render.CopyPV = _tnl_copy_pv; + tnl->Driver.Render.Interp = _tnl_interp; + + _tnl_invalidate_vertex_state( ctx, ~0 ); + _tnl_invalidate_vertices( ctx, ~0 ); + _tnl_install_attrs( ctx, + rmesa->vertex_attrs, + rmesa->vertex_attr_count, + rmesa->hw_viewport, 0 ); + + rmesa->NewGLState |= _R128_NEW_RENDER_STATE; } } } @@ -726,9 +729,16 @@ tnl->Driver.Render.Finish = r128RenderFinish; tnl->Driver.Render.PrimitiveNotify = r128RenderPrimitive; tnl->Driver.Render.ResetLineStipple = _swrast_ResetLineStipple; - tnl->Driver.Render.BuildVertices = r128BuildVertices; - rmesa->NewGLState |= (_R128_NEW_RENDER_STATE| - _R128_NEW_VERTEX_STATE); + tnl->Driver.Render.BuildVertices = _tnl_build_vertices; + tnl->Driver.Render.CopyPV = _tnl_copy_pv; + tnl->Driver.Render.Interp = _tnl_interp; + + _tnl_init_vertices( ctx, ctx->Const.MaxArrayLockSize + 12, + (6 + 2 * ctx->Const.MaxTextureUnits) * sizeof(GLfloat) ); + rmesa->verts = (char *)tnl->clipspace.vertex_buf; + rmesa->tnl_state = -1; + + rmesa->NewGLState |= _R128_NEW_RENDER_STATE; /* r128Fallback( ctx, 0x100000, 1 ); */ } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_vb.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_vb.h --- xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_vb.h 2004-06-16 11:18:13.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r128/r128_vb.h 2004-12-15 02:50:58.000000000 +0100 @@ -1,74 +0,0 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.h,v 1.8 2002/10/30 12:51:46 alanh Exp $ */ -/************************************************************************** - -Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and - VA Linux Systems Inc., Fremont, California. - -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 -ATI, VA LINUX SYSTEMS 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 - * - */ - -#ifndef R128VB_INC -#define R128VB_INC - -#include "mtypes.h" -#include "swrast/swrast.h" -#include "r128_context.h" - -#define _R128_NEW_VERTEX_STATE (_DD_NEW_SEPARATE_SPECULAR | \ - _DD_NEW_TRI_LIGHT_TWOSIDE | \ - _DD_NEW_TRI_UNFILLED | \ - _NEW_TEXTURE | \ - _NEW_FOG) - -extern void r128CheckTexSizes( GLcontext *ctx ); -extern void r128ChooseVertexState( GLcontext *ctx ); - -extern void r128BuildVertices( GLcontext *ctx, GLuint start, GLuint count, - GLuint newinputs ); - -extern void r128PrintSetupFlags(char *msg, GLuint flags ); - -extern void r128InitVB( GLcontext *ctx ); -extern void r128FreeVB( GLcontext *ctx ); - -extern void r128_emit_contiguous_verts( GLcontext *ctx, - GLuint start, - GLuint count ); - -extern void r128_emit_indexed_verts( GLcontext *ctx, - GLuint start, - GLuint count ); - -extern void r128_translate_vertex( GLcontext *ctx, - const r128Vertex *src, - SWvertex *dst ); - -extern void r128_print_vertex( GLcontext *ctx, const r128Vertex *v ); - -#endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_cmdbuf.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_cmdbuf.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_cmdbuf.c 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_cmdbuf.c 2004-12-15 02:50:58.000000000 +0100 @@ -58,113 +58,139 @@ } -static void r200_emit_state_list( r200ContextPtr rmesa, - struct r200_state_atom *list ) +/* The state atoms will be emitted in the order they appear in the atom list, + * so this step is important. + */ +void r200SetUpAtomList( r200ContextPtr rmesa ) { - struct r200_state_atom *state, *tmp; - char *dest; - int i, size, mtu; + int i, mtu; - size = 0; - foreach_s( state, tmp, list ) { - if (state->check( rmesa->glCtx, state->idx )) { -/* dest = r200AllocCmdBuf( rmesa, state->cmd_size * 4, __FUNCTION__); - memcpy( dest, state->cmd, state->cmd_size * 4);*/ - size += state->cmd_size; - state->dirty = GL_TRUE; - move_to_head( &(rmesa->hw.clean), state ); - if (R200_DEBUG & DEBUG_STATE) - print_state_atom( state ); - } - else if (R200_DEBUG & DEBUG_STATE) - fprintf(stderr, "skip state %s\n", state->name); - } + mtu = rmesa->glCtx->Const.MaxTextureUnits; - if (!size) - return; + make_empty_list(&rmesa->hw.atomlist); + rmesa->hw.atomlist.name = "atom-list"; - dest = r200AllocCmdBuf( rmesa, size * 4, __FUNCTION__); - mtu = rmesa->glCtx->Const.MaxTextureUnits; + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.ctx ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.set ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.lin ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.msk ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.vpt ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.vtx ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.vap ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.vte ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.msc ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.cst ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.zbs ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.tcl ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.msl ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.tcg ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.grd ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.fog ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.tam ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.tf ); + for (i = 0; i < mtu; ++i) + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.tex[i] ); + for (i = 0; i < mtu; ++i) + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.cube[i] ); + for (i = 0; i < 6; ++i) + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.pix[i] ); -#define EMIT_ATOM(ATOM) \ -do { \ - if (rmesa->hw.ATOM.dirty) { \ - rmesa->hw.ATOM.dirty = GL_FALSE; \ - memcpy( dest, rmesa->hw.ATOM.cmd, rmesa->hw.ATOM.cmd_size * 4); \ - dest += rmesa->hw.ATOM.cmd_size * 4; \ - } \ -} while (0) - - EMIT_ATOM (ctx); - EMIT_ATOM (set); - EMIT_ATOM (lin); - EMIT_ATOM (msk); - EMIT_ATOM (vpt); - EMIT_ATOM (vtx); - EMIT_ATOM (vap); - EMIT_ATOM (vte); - EMIT_ATOM (msc); - EMIT_ATOM (cst); - EMIT_ATOM (zbs); - EMIT_ATOM (tcl); - EMIT_ATOM (msl); - EMIT_ATOM (tcg); - EMIT_ATOM (grd); - EMIT_ATOM (fog); - EMIT_ATOM (tam); - EMIT_ATOM (tf); - for (i = 0; i < mtu; ++i) { - EMIT_ATOM (tex[i]); - } - for (i = 0; i < mtu; ++i) { - EMIT_ATOM (cube[i]); - } - for (i = 0; i < 3 + mtu; ++i) - EMIT_ATOM (mat[i]); - EMIT_ATOM (eye); - EMIT_ATOM (glt); - for (i = 0; i < 2; ++i) { - EMIT_ATOM (mtl[i]); - } for (i = 0; i < 8; ++i) - EMIT_ATOM (lit[i]); - for (i = 0; i < 6; ++i) - EMIT_ATOM (ucp[i]); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.lit[i] ); + for (i = 0; i < 3 + mtu; ++i) + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.mat[i] ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.eye ); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.glt ); + for (i = 0; i < 2; ++i) + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.mtl[i] ); for (i = 0; i < 6; ++i) - EMIT_ATOM (pix[i]); + insert_at_tail( &rmesa->hw.atomlist, &rmesa->hw.ucp[i] ); +} -#undef EMIT_ATOM +static void r200SaveHwState( r200ContextPtr rmesa ) +{ + struct r200_state_atom *atom; + char * dest = rmesa->backup_store.cmd_buf; -} + if (R200_DEBUG & DEBUG_STATE) + fprintf(stderr, "%s\n", __FUNCTION__); + rmesa->backup_store.cmd_used = 0; + + foreach( atom, &rmesa->hw.atomlist ) { + if ( atom->check( rmesa->glCtx, atom->idx ) ) { + int size = atom->cmd_size * 4; + memcpy( dest, atom->cmd, size); + dest += size; + rmesa->backup_store.cmd_used += size; + if (R200_DEBUG & DEBUG_STATE) + print_state_atom( atom ); + } + } + + assert( rmesa->backup_store.cmd_used <= R200_CMD_BUF_SZ ); + if (R200_DEBUG & DEBUG_STATE) + fprintf(stderr, "Returning to r200EmitState\n"); +} void r200EmitState( r200ContextPtr rmesa ) { - struct r200_state_atom *state, *tmp; + char *dest; + int mtu; + struct r200_state_atom *atom; if (R200_DEBUG & (DEBUG_STATE|DEBUG_PRIMS)) fprintf(stderr, "%s\n", __FUNCTION__); - /* Somewhat overkill: - */ - if ( rmesa->lost_context) { - if (R200_DEBUG & (DEBUG_STATE|DEBUG_PRIMS|DEBUG_IOCTL)) - fprintf(stderr, "%s - lost context\n", __FUNCTION__); + if (rmesa->save_on_next_emit) { + r200SaveHwState(rmesa); + rmesa->save_on_next_emit = GL_FALSE; + } + + if (!rmesa->hw.is_dirty && !rmesa->hw.all_dirty) + return; - foreach_s( state, tmp, &(rmesa->hw.clean) ) - move_to_tail(&(rmesa->hw.dirty), state ); + mtu = rmesa->glCtx->Const.MaxTextureUnits; - rmesa->lost_context = 0; + /* To avoid going across the entire set of states multiple times, just check + * for enough space for the case of emitting all state, and inline the + * r200AllocCmdBuf code here without all the checks. + */ + r200EnsureCmdBufSpace( rmesa, rmesa->hw.max_state_size ); + + /* we need to calculate dest after EnsureCmdBufSpace + as we may flush the buffer - airlied */ + dest = rmesa->store.cmd_buf + rmesa->store.cmd_used; + if (R200_DEBUG & DEBUG_STATE) { + foreach( atom, &rmesa->hw.atomlist ) { + if ( atom->dirty || rmesa->hw.all_dirty ) { + if ( atom->check( rmesa->glCtx, atom->idx ) ) + print_state_atom( atom ); + else + fprintf(stderr, "skip state %s\n", atom->name); + } + } } -/* else { - move_to_tail( &rmesa->hw.dirty, &rmesa->hw.mtl[0] );*/ - /* odd bug? -- isosurf, cycle between reflect & lit */ -/* }*/ - r200_emit_state_list( rmesa, &rmesa->hw.dirty ); -} + foreach( atom, &rmesa->hw.atomlist ) { + if ( rmesa->hw.all_dirty ) + atom->dirty = GL_TRUE; + if ( atom->dirty ) { + if ( atom->check( rmesa->glCtx, atom->idx ) ) { + int size = atom->cmd_size * 4; + memcpy( dest, atom->cmd, size); + dest += size; + rmesa->store.cmd_used += size; + atom->dirty = GL_FALSE; + } + } + } + assert( rmesa->store.cmd_used <= R200_CMD_BUF_SZ ); + rmesa->hw.is_dirty = GL_FALSE; + rmesa->hw.all_dirty = GL_FALSE; +} /* Fire a section of the retained (indexed_verts) buffer as a regular * primtive. diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.c 2004-07-22 08:51:45.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -62,7 +62,7 @@ #include "r200_vtxfmt.h" #include "r200_maos.h" -#define DRIVER_DATE "20030328" +#define DRIVER_DATE "20040929" #include "vblank.h" #include "utils.h" @@ -143,7 +143,6 @@ "GL_ATI_texture_env_combine3", "GL_ATI_texture_mirror_once", "GL_MESA_pack_invert", - "GL_MESA_ycbcr_texture", "GL_NV_blend_square", "GL_SGIS_generate_mipmap", NULL @@ -166,6 +165,7 @@ &_tnl_fog_coordinate_stage, &_tnl_texgen_stage, &_tnl_texture_transform_stage, + &_tnl_vertex_program_stage, /* Try again to go to tcl? * - no good for asymmetric-twoside (do with multipass) @@ -322,7 +322,7 @@ DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16; rmesa->swtcl.RenderIndex = ~0; - rmesa->lost_context = 1; + rmesa->hw.all_dirty = 1; /* Set the maximum texture size small enough that we can guarentee that * all texture units can bind a maximal texture and have them both in @@ -400,12 +400,21 @@ _math_matrix_set_identity( &rmesa->tmpmat ); driInitExtensions( ctx, card_extensions, GL_TRUE ); + if (rmesa->r200Screen->chipset & R200_CHIPSET_REAL_R200) { + /* yuv textures only work with r200 chips for unknown reasons, the + others get the bit ordering right but don't actually do YUV-RGB conversion */ + _mesa_enable_extension( ctx, "GL_MESA_ycbcr_texture" ); + } if (rmesa->r200Screen->drmSupportsCubeMaps) _mesa_enable_extension( ctx, "GL_ARB_texture_cube_map" ); if (rmesa->r200Screen->drmSupportsBlendColor) { _mesa_enable_extension( ctx, "GL_EXT_blend_equation_separate" ); _mesa_enable_extension( ctx, "GL_EXT_blend_func_separate" ); } + if(driQueryOptionb(&rmesa->optionCache, "arb_vertex_program")) + _mesa_enable_extension( ctx, "GL_ARB_vertex_program"); + if(driQueryOptionb(&rmesa->optionCache, "nv_vertex_program")) + _mesa_enable_extension( ctx, "GL_NV_vertex_program"); #if 0 r200InitDriverFuncs( ctx ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.h --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.h 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_context.h 2004-12-15 02:50:58.000000000 +0100 @@ -491,10 +491,8 @@ struct r200_hw_state { - /* All state should be on one of these lists: - */ - struct r200_state_atom dirty; /* dirty list head placeholder */ - struct r200_state_atom clean; /* clean list head placeholder */ + /* Head of the linked list of state atoms. */ + struct r200_state_atom atomlist; /* Hardware state, stored as cmdbuf commands: * -- Need to doublebuffer for @@ -530,6 +528,7 @@ struct r200_state_atom glt; int max_state_size; /* Number of bytes necessary for a full state emit. */ + GLboolean is_dirty, all_dirty; }; struct r200_state { @@ -825,8 +824,6 @@ }; - - struct r200_context { GLcontext *glCtx; /* Mesa context */ @@ -854,6 +851,10 @@ struct r200_ioctl ioctl; struct r200_dma dma; struct r200_store store; + /* A full state emit as of the first state emit in the main store, in case + * the context is lost. + */ + struct r200_store backup_store; /* Page flipping */ @@ -876,6 +877,7 @@ drm_clip_rect_t *pClipRects; unsigned int lastStamp; GLboolean lost_context; + GLboolean save_on_next_emit; r200ScreenPtr r200Screen; /* Screen private DRI data */ drm_radeon_sarea_t *sarea; /* Private SAREA data */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.c 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.c 2004-12-15 02:50:58.000000000 +0100 @@ -59,11 +59,41 @@ static void r200WaitForIdle( r200ContextPtr rmesa ); +/* At this point we were in FlushCmdBufLocked but we had lost our context, so + * we need to unwire our current cmdbuf, hook the one with the saved state in + * it, flush it, and then put the current one back. This is so commands at the + * start of a cmdbuf can rely on the state being kept from the previous one. + */ +static void r200BackUpAndEmitLostStateLocked( r200ContextPtr rmesa ) +{ + GLuint nr_released_bufs; + struct r200_store saved_store; + + if (rmesa->backup_store.cmd_used == 0) + return; + + if (R200_DEBUG & DEBUG_STATE) + fprintf(stderr, "Emitting backup state on lost context\n"); + + rmesa->lost_context = GL_FALSE; + + nr_released_bufs = rmesa->dma.nr_released_bufs; + saved_store = rmesa->store; + rmesa->dma.nr_released_bufs = 0; + rmesa->store = rmesa->backup_store; + r200FlushCmdBufLocked( rmesa, __FUNCTION__ ); + rmesa->dma.nr_released_bufs = nr_released_bufs; + rmesa->store = saved_store; +} + int r200FlushCmdBufLocked( r200ContextPtr rmesa, const char * caller ) { int ret, i; drm_radeon_cmd_buffer_t cmd; + if (rmesa->lost_context) + r200BackUpAndEmitLostStateLocked( rmesa ); + if (R200_DEBUG & DEBUG_IOCTL) { fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -132,18 +162,7 @@ rmesa->store.statenr = 0; rmesa->store.cmd_used = 0; rmesa->dma.nr_released_bufs = 0; - /* Set lost_context so that the first state emit on the new buffer is a full - * one. This is because the context might get lost while preparing the next - * buffer, and when we lock and find out, we don't have the information to - * recreate the state. This function should always be called before the new - * buffer is begun, so it's sufficient to just set lost_context here. - * - * The alternative to this would be to copy out the state on unlock - * (approximately) and if we did lose the context, dispatch a cmdbuf to reset - * the state to that old copy before continuing with the accumulated command - * buffer. - */ - rmesa->lost_context = 1; + rmesa->save_on_next_emit = 1; return ret; } @@ -464,7 +483,7 @@ } UNLOCK_HARDWARE( rmesa ); - rmesa->lost_context = 1; + rmesa->hw.all_dirty = GL_TRUE; rmesa->swap_count++; (*rmesa->get_ust)( & ust ); @@ -576,7 +595,7 @@ return; } - R200_FIREVERTICES( rmesa ); + r200Flush( ctx ); if ( mask & DD_FRONT_LEFT_BIT ) { flags |= RADEON_FRONT; @@ -613,13 +632,6 @@ cx += dPriv->x; cy = dPriv->y + dPriv->h - cy - ch; - /* We have to emit state along with the clear, since the kernel relies on - * some of it. The EmitState that was above R200_FIREVERTICES was an - * attempt to do that, except that another context may come in and cause us - * to lose our context while we're unlocked. - */ - r200EmitState( rmesa ); - LOCK_HARDWARE( rmesa ); /* Throttle the number of clear ioctls we do. @@ -722,7 +734,7 @@ } UNLOCK_HARDWARE( rmesa ); - rmesa->lost_context = 1; + rmesa->hw.all_dirty = GL_TRUE; } @@ -763,8 +775,7 @@ if (rmesa->dma.flush) rmesa->dma.flush( rmesa ); - if (!is_empty_list(&rmesa->hw.dirty)) - r200EmitState( rmesa ); + r200EmitState( rmesa ); if (rmesa->store.cmd_used) r200FlushCmdBuf( rmesa, __FUNCTION__ ); @@ -847,7 +858,7 @@ { GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa; - int region_offset; + ptrdiff_t region_offset; drm_radeon_mem_free_t memfree; int ret; @@ -908,7 +919,7 @@ GLboolean r200IsGartMemory( r200ContextPtr rmesa, const GLvoid *pointer, GLint size ) { - int offset = (char *)pointer - (char *)rmesa->r200Screen->gartTextures.map; + ptrdiff_t offset = (char *)pointer - (char *)rmesa->r200Screen->gartTextures.map; int valid = (size >= 0 && offset >= 0 && offset + size < rmesa->r200Screen->gartTextures.size); @@ -922,7 +933,7 @@ GLuint r200GartOffsetFromVirtual( r200ContextPtr rmesa, const GLvoid *pointer ) { - int offset = (char *)pointer - (char *)rmesa->r200Screen->gartTextures.map; + ptrdiff_t offset = (char *)pointer - (char *)rmesa->r200Screen->gartTextures.map; if (offset < 0 || offset > rmesa->r200Screen->gartTextures.size) return ~0; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.h --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.h 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_ioctl.h 2004-12-15 02:50:58.000000000 +0100 @@ -117,6 +117,8 @@ extern GLuint r200GartOffsetFromVirtual( r200ContextPtr rmesa, const GLvoid *pointer ); +void r200SetUpAtomList( r200ContextPtr rmesa ); + /* ================================================================ * Helper macros: */ @@ -135,7 +137,8 @@ #define R200_STATECHANGE( rmesa, ATOM ) \ do { \ R200_NEWPRIM( rmesa ); \ - move_to_head( &(rmesa->hw.dirty), &(rmesa->hw.ATOM)); \ + rmesa->hw.ATOM.dirty = GL_TRUE; \ + rmesa->hw.is_dirty = GL_TRUE; \ } while (0) #define R200_DB_STATE( ATOM ) \ @@ -149,7 +152,8 @@ if (memcmp(atom->cmd, atom->lastcmd, atom->cmd_size*4)) { int *tmp; R200_NEWPRIM( rmesa ); - move_to_head( &(rmesa->hw.dirty), atom ); + atom->dirty = GL_TRUE; + rmesa->hw.is_dirty = GL_TRUE; tmp = atom->cmd; atom->cmd = atom->lastcmd; atom->lastcmd = tmp; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_lock.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_lock.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_lock.c 2004-06-16 11:18:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_lock.c 2004-12-15 02:50:58.000000000 +0100 @@ -116,4 +116,6 @@ for ( i = 0 ; i < rmesa->nr_heaps ; i++ ) { DRI_AGE_TEXTURES( rmesa->texture_heaps[ i ] ); } + + rmesa->lost_context = GL_TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_screen.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_screen.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_screen.c 2004-07-22 08:51:46.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_screen.c 2004-12-15 02:50:58.000000000 +0100 @@ -75,8 +75,12 @@ DRI_CONF_SECTION_DEBUG DRI_CONF_NO_RAST(false) DRI_CONF_SECTION_END + DRI_CONF_SECTION_SOFTWARE + DRI_CONF_ARB_VERTEX_PROGRAM(true) + DRI_CONF_NV_VERTEX_PROGRAM(false) + DRI_CONF_SECTION_END DRI_CONF_END; -static const GLuint __driNConfigOptions = 11; +static const GLuint __driNConfigOptions = 13; #if 1 /* Including xf86PciInfo.h introduces a bunch of errors... @@ -87,7 +91,8 @@ #define PCI_CHIP_R200_QG 0x5147 #define PCI_CHIP_R200_QY 0x5159 #define PCI_CHIP_R200_QZ 0x515A -#define PCI_CHIP_R200_LW 0x4C57 +#define PCI_CHIP_R200_LW 0x4C57 +#define PCI_CHIP_R200_LX 0x4C58 #define PCI_CHIP_R200_LY 0x4C59 #define PCI_CHIP_R200_LZ 0x4C5A #define PCI_CHIP_RV200_QW 0x5157 /* Radeon 7500 - not an R200 at all */ @@ -112,8 +117,14 @@ #define PCI_CHIP_R200_QM 0x514D #define PCI_CHIP_R200_QN 0x514E #define PCI_CHIP_R200_QO 0x514F /* r200 (non-derived) end */ -/* are the R200 Qh (0x5168) and following needed too? They are not in xf86PciInfo.h - but in the pci database. Maybe just secondary ports or something ? */ +/* are the R200 Qh (0x5168) and following needed too? They are not in + xf86PciInfo.h but in the pci database. Maybe just secondary ports or + something ? Ah well, better be safe than sorry */ +#define PCI_CHIP_R200_Qh 0x5168 +#define PCI_CHIP_R200_Qi 0x5169 +#define PCI_CHIP_R200_Qj 0x516A +#define PCI_CHIP_R200_Qk 0x516B +#define PCI_CHIP_R200_Ql 0x516C #endif @@ -237,6 +248,7 @@ case PCI_CHIP_RV200_QW: case PCI_CHIP_RV200_QX: case PCI_CHIP_R200_LW: + case PCI_CHIP_R200_LX: case PCI_CHIP_R200_LY: case PCI_CHIP_R200_LZ: case PCI_CHIP_RS100_4136: @@ -265,6 +277,11 @@ case PCI_CHIP_R200_QM: case PCI_CHIP_R200_QN: case PCI_CHIP_R200_QO: + case PCI_CHIP_R200_Qh: + case PCI_CHIP_R200_Qi: + case PCI_CHIP_R200_Qj: + case PCI_CHIP_R200_Qk: + case PCI_CHIP_R200_Ql: screen->chipset |= R200_CHIPSET_REAL_R200; /* fallthrough */ default: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_span.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_span.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_span.c 2004-06-16 11:18:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_span.c 2004-12-15 02:50:58.000000000 +0100 @@ -195,7 +195,7 @@ GLint x, GLint y ) { GLuint pitch = rmesa->r200Screen->frontPitch; - GLuint b = ((y & 0x3FF) >> 4) * ((pitch & 0xFFF) >> 5) + ((x & 0x3FF) >> 5); + GLuint b = ((y & 0x7FF) >> 4) * ((pitch & 0xFFF) >> 5) + ((x & 0x7FF) >> 5); GLuint a = (BIT(x,0) << 2) | (BIT(y,0) << 3) | @@ -214,7 +214,7 @@ static GLuint r200_mba_z16( r200ContextPtr rmesa, GLint x, GLint y ) { GLuint pitch = rmesa->r200Screen->frontPitch; - GLuint b = ((y & 0x3FF) >> 4) * ((pitch & 0xFFF) >> 6) + ((x & 0x3FF) >> 6); + GLuint b = ((y & 0x7FF) >> 4) * ((pitch & 0xFFF) >> 6) + ((x & 0x7FF) >> 6); GLuint a = (BIT(x,0) << 1) | (BIT(y,0) << 2) | diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state.c 2004-06-16 11:18:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state.c 2004-12-15 02:50:58.000000000 +0100 @@ -2043,6 +2043,10 @@ r200UpdateSpecular ( ctx ); break; + case GL_VERTEX_PROGRAM_ARB: + TCL_FALLBACK(rmesa->glCtx, R200_TCL_FALLBACK_TCL_DISABLE, state); + break; + default: return; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state_init.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state_init.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state_init.c 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_state_init.c 2004-12-15 02:50:58.000000000 +0100 @@ -65,8 +65,9 @@ fprintf(stderr, msg); fprintf(stderr, ": "); - foreach(l, &(rmesa->hw.dirty)) { - fprintf(stderr, "%s, ", l->name); + foreach(l, &rmesa->hw.atomlist) { + if (l->dirty || rmesa->hw.all_dirty) + fprintf(stderr, "%s, ", l->name); } fprintf(stderr, "\n"); @@ -200,11 +201,6 @@ rmesa->state.pixel.readOffset = rmesa->state.color.drawOffset; rmesa->state.pixel.readPitch = rmesa->state.color.drawPitch; - /* Initialize lists: - */ - make_empty_list(&(rmesa->hw.dirty)); rmesa->hw.dirty.name = "DIRTY"; - make_empty_list(&(rmesa->hw.clean)); rmesa->hw.clean.name = "CLEAN"; - rmesa->hw.max_state_size = 0; #define ALLOC_STATE( ATOM, CHK, SZ, NM, IDX ) \ @@ -214,8 +210,8 @@ rmesa->hw.ATOM.lastcmd = (int *)CALLOC(SZ * sizeof(int)); \ rmesa->hw.ATOM.name = NM; \ rmesa->hw.ATOM.idx = IDX; \ - rmesa->hw.ATOM.check = check_##CHK; \ - insert_at_head(&(rmesa->hw.dirty), &(rmesa->hw.ATOM)); \ + rmesa->hw.ATOM.check = check_##CHK; \ + rmesa->hw.ATOM.dirty = GL_FALSE; \ rmesa->hw.max_state_size += SZ * sizeof(int); \ } while (0) @@ -308,6 +304,7 @@ ALLOC_STATE( pix[4], tex, PIX_STATE_SIZE, "PIX/pixstage-4", 4 ); ALLOC_STATE( pix[5], tex, PIX_STATE_SIZE, "PIX/pixstage-5", 5 ); + r200SetUpAtomList( rmesa ); /* Fill in the packet headers: */ @@ -772,5 +769,5 @@ r200LightingSpaceChange( ctx ); - rmesa->lost_context = 1; + rmesa->hw.all_dirty = GL_TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_swtcl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_swtcl.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_swtcl.c 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_swtcl.c 2004-12-15 02:50:58.000000000 +0100 @@ -117,12 +117,17 @@ } rmesa->swtcl.coloroffset = offset; +#if MESA_LITTLE_ENDIAN EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_RGBA, (R200_VTX_PK_RGBA << R200_VTX_COLOR_0_SHIFT) ); +#else + EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_ABGR, (R200_VTX_PK_RGBA << R200_VTX_COLOR_0_SHIFT) ); +#endif offset += 1; rmesa->swtcl.specoffset = 0; if (index & (_TNL_BIT_COLOR1|_TNL_BIT_FOG)) { +#if MESA_LITTLE_ENDIAN if (index & _TNL_BIT_COLOR1) { rmesa->swtcl.specoffset = offset; EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_RGB, (R200_VTX_PK_RGBA << R200_VTX_COLOR_1_SHIFT) ); @@ -137,6 +142,22 @@ else { EMIT_PAD( 1 ); } +#else + if (index & _TNL_BIT_FOG) { + EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1UB_1F, (R200_VTX_PK_RGBA << R200_VTX_COLOR_1_SHIFT) ); + } + else { + EMIT_PAD( 1 ); + } + + if (index & _TNL_BIT_COLOR1) { + rmesa->swtcl.specoffset = offset; + EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_BGR, (R200_VTX_PK_RGBA << R200_VTX_COLOR_1_SHIFT) ); + } + else { + EMIT_PAD( 3 ); + } +#endif } if (index & _TNL_BITS_TEX_ANY) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.c 2004-08-17 22:17:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.c 2005-01-13 02:10:28.000000000 +0100 @@ -140,32 +140,48 @@ static GLushort *r200AllocElts( r200ContextPtr rmesa, GLuint nr ) { - if (rmesa->dma.flush) - rmesa->dma.flush( rmesa ); + if (rmesa->dma.flush == r200FlushElts && + rmesa->store.cmd_used + nr*2 < R200_CMD_BUF_SZ) { - r200EnsureCmdBufSpace( rmesa, AOS_BUFSZ(rmesa->tcl.nr_aos_components) + - rmesa->hw.max_state_size + ELTS_BUFSZ(nr) ); - - r200EmitAOS( rmesa, - rmesa->tcl.aos_components, - rmesa->tcl.nr_aos_components, 0 ); + GLushort *dest = (GLushort *)(rmesa->store.cmd_buf + + rmesa->store.cmd_used); - return r200AllocEltsOpenEnded( rmesa, rmesa->tcl.hw_primitive, nr ); + rmesa->store.cmd_used += nr*2; + + return dest; + } + else { + if (rmesa->dma.flush) + rmesa->dma.flush( rmesa ); + + r200EnsureCmdBufSpace( rmesa, AOS_BUFSZ(rmesa->tcl.nr_aos_components) + + rmesa->hw.max_state_size + ELTS_BUFSZ(nr) ); + + r200EmitAOS( rmesa, + rmesa->tcl.aos_components, + rmesa->tcl.nr_aos_components, 0 ); + + return r200AllocEltsOpenEnded( rmesa, rmesa->tcl.hw_primitive, nr ); + } } -#define CLOSE_ELTS() R200_NEWPRIM( rmesa ) +#define CLOSE_ELTS() \ +do { \ + if (0) R200_NEWPRIM( rmesa ); \ +} \ +while (0) /* TODO: Try to extend existing primitive if both are identical, * discrete and there are no intervening state changes. (Somewhat * duplicates changes to DrawArrays code) */ -static void EMIT_PRIM( GLcontext *ctx, - GLenum prim, - GLuint hwprim, - GLuint start, - GLuint count) +static void r200EmitPrim( GLcontext *ctx, + GLenum prim, + GLuint hwprim, + GLuint start, + GLuint count) { r200ContextPtr rmesa = R200_CONTEXT( ctx ); r200TclPrimitive( ctx, prim, hwprim ); @@ -185,7 +201,9 @@ count - start ); } - +#define EMIT_PRIM(ctx, prim, hwprim, start, count) do { \ + r200EmitPrim( ctx, prim, hwprim, start, count ); \ + (void) rmesa; } while (0) /* Try & join small primitives */ @@ -205,9 +223,12 @@ #define EMIT_ELT(dest, offset, x) do { \ int off = offset + ( ( (GLuint)dest & 0x2 ) >> 1 ); \ GLushort *des = (GLushort *)( (GLuint)dest & ~0x2 ); \ - (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); } while (0) + (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); \ + (void)rmesa; } while (0) #else -#define EMIT_ELT(dest, offset, x) (dest)[offset] = (GLushort) (x) +#define EMIT_ELT(dest, offset, x) do { \ + (dest)[offset] = (GLushort) (x); \ + (void)rmesa; } while (0) #endif #define EMIT_TWO_ELTS(dest, offset, x, y) *(GLuint *)((dest)+offset) = ((y)<<16)|(x); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.h --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.h 2004-06-16 11:18:18.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tcl.h 2004-12-15 02:50:58.000000000 +0100 @@ -60,6 +60,7 @@ #define R200_TCL_FALLBACK_TEXGEN_5 0x200 /* texgen, unit 5 */ #define R200_TCL_FALLBACK_TCL_DISABLE 0x400 /* user disable */ #define R200_TCL_FALLBACK_BITMAP 0x800 /* draw bitmap with points */ +#define R200_TCL_FALLBACK_VERTEX_PROGRAM 0x1000/* vertex program active */ #define TCL_FALLBACK( ctx, bit, mode ) r200TclFallback( ctx, bit, mode ) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tex.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tex.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tex.c 2004-07-22 08:51:49.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_tex.c 2004-12-15 02:50:58.000000000 +0100 @@ -421,7 +421,9 @@ return &_mesa_texformat_ycbcr_rev; default: - _mesa_problem(ctx, "unexpected texture format in %s", __FUNCTION__); + _mesa_problem(ctx, + "unexpected internalFormat 0x%x in r200ChooseTextureFormat", + (int) internalFormat); return NULL; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texmem.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texmem.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texmem.c 2004-06-16 11:18:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texmem.c 2004-12-15 02:50:58.000000000 +0100 @@ -43,7 +43,6 @@ #include "context.h" #include "colormac.h" #include "macros.h" -#include "simple_list.h" #include "radeon_reg.h" /* gets definition for usleep */ #include "r200_context.h" #include "r200_state.h" @@ -73,10 +72,8 @@ for ( i = 0 ; i < rmesa->glCtx->Const.MaxTextureUnits ; i++ ) { if ( t == rmesa->state.texture.unit[i].texobj ) { rmesa->state.texture.unit[i].texobj = NULL; - remove_from_list( &rmesa->hw.tex[i] ); - make_empty_list( &rmesa->hw.tex[i] ); - remove_from_list( &rmesa->hw.cube[i] ); - make_empty_list( &rmesa->hw.cube[i] ); + rmesa->hw.tex[i].dirty = GL_FALSE; + rmesa->hw.cube[i].dirty = GL_FALSE; } } } @@ -385,6 +382,14 @@ /* copy (x,y,width,height,data) */ memcpy( &tmp, &t->image[face][hwlevel], sizeof(tmp) ); + /* Adjust the base offset to account for the Y-offset. This is done, + * instead of just letting the Y-offset automatically take care of it, + * because it is possible, for very large textures, for the Y-offset + * to exceede the [-8192,+8191] range. + */ + tex.offset += tmp.y * 1024; + tmp.y = 0; + LOCK_HARDWARE( rmesa ); do { ret = drmCommandWriteRead( rmesa->dri.fd, DRM_RADEON_TEXTURE, diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texstate.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texstate.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texstate.c 2004-07-22 08:51:49.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_texstate.c 2004-12-15 02:50:58.000000000 +0100 @@ -999,7 +999,7 @@ R200_TEX_BLEND_0_ENABLE) << unit); rmesa->hw.ctx.cmd[CTX_PP_CNTL] |= R200_TEX_BLEND_0_ENABLE; - R200_STATECHANGE( rmesa, tcl ); + R200_STATECHANGE( rmesa, vtx ); rmesa->hw.vtx.cmd[VTX_TCL_OUTPUT_VTXFMT_1] &= ~(7 << (unit * 3)); if (rmesa->TclFallback & (R200_TCL_FALLBACK_TEXGEN_0<hw.ctx.cmd[CTX_PP_CNTL] & (R200_TEX_0_ENABLE )) && ((((rmesa->hw.tex[0].cmd[TEX_PP_TXFILTER] & R200_MIN_FILTER_MASK)) & 0x04) == 0)) || @@ -1362,7 +1367,7 @@ 0x04) == 0))) { dbg |= 0x04; - } + }*/ if (dbg != rmesa->hw.tam.cmd[TAM_DEBUG3]) { R200_STATECHANGE( rmesa, tam ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_vtxfmt_c.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_vtxfmt_c.c --- xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_vtxfmt_c.c 2004-06-16 11:18:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/r200/r200_vtxfmt_c.c 2004-12-15 02:50:58.000000000 +0100 @@ -122,6 +122,7 @@ /* Color for ubyte (packed) color formats: */ +#if 0 static void r200_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -161,7 +162,7 @@ r200ContextPtr rmesa = R200_CONTEXT(ctx); *(GLuint *)rmesa->vb.colorptr = LE32_TO_CPU(*(GLuint *)v); } - +#endif /* 0 */ static void r200_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) { @@ -210,6 +211,7 @@ /* Color for float color+alpha formats: */ +#if 0 static void r200_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -253,6 +255,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); dest[3] = UBYTE_TO_FLOAT(v[3]); } +#endif /* 0 */ static void r200_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) @@ -302,6 +305,7 @@ /* Color for float color formats: */ +#if 0 static void r200_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -343,6 +347,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(v[3]); } +#endif /* 0 */ static void r200_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) @@ -390,6 +395,7 @@ /* Secondary Color: */ +#if 0 static void r200_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -411,6 +417,7 @@ dest->blue = v[2]; dest->alpha = 0xff; } +#endif /* 0 */ static void r200_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) { @@ -434,6 +441,7 @@ dest->alpha = 255; } +#if 0 static void r200_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -455,6 +463,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); dest[3] = 1.0; } +#endif /* 0 */ static void r200_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_compat.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_compat.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_compat.c 2004-06-16 11:18:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_compat.c 2004-12-15 02:50:58.000000000 +0100 @@ -202,30 +202,28 @@ static void radeonCompatEmitStateLocked( radeonContextPtr rmesa ) { - struct radeon_state_atom *state, *tmp; + struct radeon_state_atom *atom; if (RADEON_DEBUG & (DEBUG_STATE|DEBUG_PRIMS)) fprintf(stderr, "%s\n", __FUNCTION__); - if (rmesa->lost_context) { - if (RADEON_DEBUG & (DEBUG_STATE|DEBUG_PRIMS|DEBUG_IOCTL)) - fprintf(stderr, "%s - lost context\n", __FUNCTION__); + if (!rmesa->hw.is_dirty && !rmesa->hw.all_dirty) + return; - foreach_s( state, tmp, &(rmesa->hw.clean) ) - move_to_tail(&(rmesa->hw.dirty), state ); - - rmesa->lost_context = 0; - } - - foreach_s( state, tmp, &(rmesa->hw.dirty) ) { - if (!state->is_tcl) - radeonCompatEmitPacket( rmesa, state ); - move_to_head( &(rmesa->hw.clean), state ); + foreach(atom, &rmesa->hw.atomlist) { + if (rmesa->hw.all_dirty) + atom->dirty = GL_TRUE; + if (atom->is_tcl) + atom->dirty = GL_FALSE; + if (atom->dirty) + radeonCompatEmitPacket(rmesa, atom); } + + rmesa->hw.is_dirty = GL_FALSE; + rmesa->hw.all_dirty = GL_FALSE; } - static void radeonCompatEmitPrimitiveLocked( radeonContextPtr rmesa, GLuint hw_primitive, GLuint nverts, diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.c 2004-07-22 08:51:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.c 2004-12-15 02:50:58.000000000 +0100 @@ -62,7 +62,7 @@ #include "radeon_vtxfmt.h" #include "radeon_maos.h" -#define DRIVER_DATE "20030328" +#define DRIVER_DATE "20040929" #include "vblank.h" #include "utils.h" @@ -306,7 +306,7 @@ DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16; rmesa->swtcl.RenderIndex = ~0; - rmesa->lost_context = 1; + rmesa->hw.all_dirty = GL_TRUE; /* Set the maximum texture size small enough that we can guarentee that * all texture units can bind a maximal texture and have them both in diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.h --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.h 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_context.h 2004-12-15 02:50:58.000000000 +0100 @@ -398,14 +398,11 @@ struct radeon_hw_state { - /* All state should be on one of these lists: - */ - struct radeon_state_atom dirty; /* dirty list head placeholder */ - struct radeon_state_atom clean; /* clean list head placeholder */ + /* Head of the linked list of state atoms. */ + struct radeon_state_atom atomlist; /* Hardware state, stored as cmdbuf commands: * -- Need to doublebuffer for - * - reviving state after loss of context * - eliding noop statechange loops? (except line stipple count) */ struct radeon_state_atom ctx; @@ -428,6 +425,7 @@ struct radeon_state_atom txr[2]; /* for NPOT */ int max_state_size; /* Number of bytes necessary for a full state emit. */ + GLboolean is_dirty, all_dirty; }; struct radeon_state { @@ -715,6 +713,10 @@ struct radeon_ioctl ioctl; struct radeon_dma dma; struct radeon_store store; + /* A full state emit as of the first state emit in the main store, in case + * the context is lost. + */ + struct radeon_store backup_store; /* Page flipping */ @@ -733,6 +735,7 @@ drm_clip_rect_t *pClipRects; unsigned int lastStamp; GLboolean lost_context; + GLboolean save_on_next_emit; radeonScreenPtr radeonScreen; /* Screen private DRI data */ drm_radeon_sarea_t *sarea; /* Private SAREA data */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.c 2005-01-25 01:43:29.000000000 +0100 @@ -59,10 +59,8 @@ static void radeonWaitForIdle( radeonContextPtr rmesa ); - -/* ============================================================= - * Kernel command buffer handling - */ +static int radeonFlushCmdBufLocked( radeonContextPtr rmesa, + const char * caller ); static void print_state_atom( struct radeon_state_atom *state ) { @@ -76,115 +74,160 @@ } -static void radeon_emit_state_list( radeonContextPtr rmesa, - struct radeon_state_atom *list ) +static void radeonSaveHwState( radeonContextPtr rmesa ) { - struct radeon_state_atom *state, *tmp; - char *dest; - int i, size, texunits; + struct radeon_state_atom *atom; + char * dest = rmesa->backup_store.cmd_buf; - /* It appears that some permutations of state atoms lock up the - * chip. Therefore we make sure that state atoms are emitted in a - * fixed order. First mark all dirty state atoms and then go - * through all state atoms in a well defined order and emit only - * the marked ones. - * FIXME: This requires knowledge of which state atoms exist. - * FIXME: Is the zbs hack below still needed? - */ - size = 0; - foreach_s( state, tmp, list ) { - if (state->check( rmesa->glCtx )) { - size += state->cmd_size; - state->dirty = GL_TRUE; - move_to_head( &(rmesa->hw.clean), state ); - if (RADEON_DEBUG & DEBUG_STATE) - print_state_atom( state ); - } - else if (RADEON_DEBUG & DEBUG_STATE) - fprintf(stderr, "skip state %s\n", state->name); - } - /* short cut */ - if (!size) - return; - - dest = radeonAllocCmdBuf( rmesa, size * 4, __FUNCTION__); - texunits = rmesa->glCtx->Const.MaxTextureUnits; - -#define EMIT_ATOM(ATOM) \ -do { \ - if (rmesa->hw.ATOM.dirty) { \ - rmesa->hw.ATOM.dirty = GL_FALSE; \ - memcpy( dest, rmesa->hw.ATOM.cmd, rmesa->hw.ATOM.cmd_size * 4); \ - dest += rmesa->hw.ATOM.cmd_size * 4; \ - } \ -} while (0) - - EMIT_ATOM (ctx); - EMIT_ATOM (set); - EMIT_ATOM (lin); - EMIT_ATOM (msk); - EMIT_ATOM (vpt); - EMIT_ATOM (tcl); - EMIT_ATOM (msc); - for (i = 0; i < texunits; ++i) { - EMIT_ATOM (tex[i]); - EMIT_ATOM (txr[i]); - } - EMIT_ATOM (zbs); - EMIT_ATOM (mtl); - for (i = 0; i < 3 + texunits; ++i) - EMIT_ATOM (mat[i]); - for (i = 0; i < 8; ++i) - EMIT_ATOM (lit[i]); - for (i = 0; i < 6; ++i) - EMIT_ATOM (ucp[i]); - EMIT_ATOM (eye); - EMIT_ATOM (grd); - EMIT_ATOM (fog); - EMIT_ATOM (glt); + if (RADEON_DEBUG & DEBUG_STATE) + fprintf(stderr, "%s\n", __FUNCTION__); + + rmesa->backup_store.cmd_used = 0; + + foreach( atom, &rmesa->hw.atomlist ) { + if ( atom->check( rmesa->glCtx ) ) { + int size = atom->cmd_size * 4; + memcpy( dest, atom->cmd, size); + dest += size; + rmesa->backup_store.cmd_used += size; + if (RADEON_DEBUG & DEBUG_STATE) + print_state_atom( atom ); + } + } + + assert( rmesa->backup_store.cmd_used <= RADEON_CMD_BUF_SZ ); + if (RADEON_DEBUG & DEBUG_STATE) + fprintf(stderr, "Returning to radeonEmitState\n"); +} + +/* At this point we were in FlushCmdBufLocked but we had lost our context, so + * we need to unwire our current cmdbuf, hook the one with the saved state in + * it, flush it, and then put the current one back. This is so commands at the + * start of a cmdbuf can rely on the state being kept from the previous one. + */ +static void radeonBackUpAndEmitLostStateLocked( radeonContextPtr rmesa ) +{ + GLuint nr_released_bufs; + struct radeon_store saved_store; + + if (rmesa->backup_store.cmd_used == 0) + return; + + if (RADEON_DEBUG & DEBUG_STATE) + fprintf(stderr, "Emitting backup state on lost context\n"); + + rmesa->lost_context = GL_FALSE; -#undef EMIT_ATOM + nr_released_bufs = rmesa->dma.nr_released_bufs; + saved_store = rmesa->store; + rmesa->dma.nr_released_bufs = 0; + rmesa->store = rmesa->backup_store; + radeonFlushCmdBufLocked( rmesa, __FUNCTION__ ); + rmesa->dma.nr_released_bufs = nr_released_bufs; + rmesa->store = saved_store; } +/* ============================================================= + * Kernel command buffer handling + */ + +/* The state atoms will be emitted in the order they appear in the atom list, + * so this step is important. + */ +void radeonSetUpAtomList( radeonContextPtr rmesa ) +{ + int i, mtu = rmesa->glCtx->Const.MaxTextureUnits; + + make_empty_list(&rmesa->hw.atomlist); + rmesa->hw.atomlist.name = "atom-list"; + + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.ctx); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.set); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.lin); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.msk); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.vpt); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.tcl); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.msc); + for (i = 0; i < mtu; ++i) { + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.tex[i]); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.txr[i]); + } + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.zbs); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.mtl); + for (i = 0; i < 3 + mtu; ++i) + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.mat[i]); + for (i = 0; i < 8; ++i) + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.lit[i]); + for (i = 0; i < 6; ++i) + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.ucp[i]); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.eye); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.grd); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.fog); + insert_at_tail(&rmesa->hw.atomlist, &rmesa->hw.glt); +} void radeonEmitState( radeonContextPtr rmesa ) { - struct radeon_state_atom *state, *tmp; + struct radeon_state_atom *atom; + char *dest; if (RADEON_DEBUG & (DEBUG_STATE|DEBUG_PRIMS)) fprintf(stderr, "%s\n", __FUNCTION__); - /* Somewhat overkill: + if (rmesa->save_on_next_emit) { + radeonSaveHwState(rmesa); + rmesa->save_on_next_emit = GL_FALSE; + } + + /* this code used to return here but now it emits zbs */ + + /* To avoid going across the entire set of states multiple times, just check + * for enough space for the case of emitting all state, and inline the + * radeonAllocCmdBuf code here without all the checks. */ - if (rmesa->lost_context) { - if (RADEON_DEBUG & (DEBUG_STATE|DEBUG_PRIMS|DEBUG_IOCTL)) - fprintf(stderr, "%s - lost context\n", __FUNCTION__); - - foreach_s( state, tmp, &(rmesa->hw.clean) ) - move_to_tail(&(rmesa->hw.dirty), state ); - - rmesa->lost_context = 0; - } - else if (1) { - /* This is a darstardly kludge to work around a lockup that I - * haven't otherwise figured out. - */ - move_to_tail(&(rmesa->hw.dirty), &(rmesa->hw.zbs) ); + radeonEnsureCmdBufSpace(rmesa, rmesa->hw.max_state_size); + dest = rmesa->store.cmd_buf + rmesa->store.cmd_used; + + /* We always always emit zbs, this is due to a bug found by keithw in + * the hardware and rediscovered after Erics changes by me. + * if you ever touch this code make sure you emit zbs otherwise + * you get tcl lockups on at least M7/7500 class of chips - airlied */ + rmesa->hw.zbs.dirty=1; + + if (RADEON_DEBUG & DEBUG_STATE) { + foreach(atom, &rmesa->hw.atomlist) { + if (atom->dirty || rmesa->hw.all_dirty) { + if (atom->check(rmesa->glCtx)) + print_state_atom(atom); + else + fprintf(stderr, "skip state %s\n", atom->name); + } + } } - if (!(rmesa->radeonScreen->chipset & RADEON_CHIPSET_TCL)) { - foreach_s( state, tmp, &(rmesa->hw.dirty) ) { - if (state->is_tcl) { - move_to_head( &(rmesa->hw.clean), state ); - } - } + foreach(atom, &rmesa->hw.atomlist) { + if (rmesa->hw.all_dirty) + atom->dirty = GL_TRUE; + if (!(rmesa->radeonScreen->chipset & RADEON_CHIPSET_TCL) && + atom->is_tcl) + atom->dirty = GL_FALSE; + if (atom->dirty) { + if (atom->check(rmesa->glCtx)) { + int size = atom->cmd_size * 4; + memcpy(dest, atom->cmd, size); + dest += size; + rmesa->store.cmd_used += size; + atom->dirty = GL_FALSE; + } + } } - radeon_emit_state_list( rmesa, &rmesa->hw.dirty ); + assert(rmesa->store.cmd_used <= RADEON_CMD_BUF_SZ); + + rmesa->hw.is_dirty = GL_FALSE; + rmesa->hw.all_dirty = GL_FALSE; } - - /* Fire a section of the retained (indexed_verts) buffer as a regular * primtive. */ @@ -376,7 +419,7 @@ (component[0]->aos_start + offset * component[0]->aos_stride * 4); #else drm_radeon_cmd_header_t *cmd; - int sz = AOS_BUFSZ; + int sz = AOS_BUFSZ(nr); int i; int *tmp; @@ -491,6 +534,9 @@ int ret, i; drm_radeon_cmd_buffer_t cmd; + if (rmesa->lost_context) + radeonBackUpAndEmitLostStateLocked(rmesa); + if (RADEON_DEBUG & DEBUG_IOCTL) { fprintf(stderr, "%s from %s\n", __FUNCTION__, caller); @@ -544,18 +590,7 @@ rmesa->store.statenr = 0; rmesa->store.cmd_used = 0; rmesa->dma.nr_released_bufs = 0; - /* Set lost_context so that the first state emit on the new buffer is a full - * one. This is because the context might get lost while preparing the next - * buffer, and when we lock and find out, we don't have the information to - * recreate the state. This function should always be called before the new - * buffer is begun, so it's sufficient to just set lost_context here. - * - * The alternative to this would be to copy out the state on unlock - * (approximately) and if we did lose the context, dispatch a cmdbuf to reset - * the state to that old copy before continuing with the accumulated command - * buffer. - */ - rmesa->lost_context = 1; + rmesa->save_on_next_emit = 1; return ret; } @@ -897,6 +932,7 @@ } rmesa->swap_ust = ust; + rmesa->hw.all_dirty = GL_TRUE; } void radeonPageFlip( const __DRIdrawablePrivate *dPriv ) @@ -990,7 +1026,14 @@ __FUNCTION__, all, cx, cy, cw, ch ); } - RADEON_FIREVERTICES( rmesa ); + { + LOCK_HARDWARE( rmesa ); + UNLOCK_HARDWARE( rmesa ); + if ( dPriv->numClipRects == 0 ) + return; + } + + radeonFlush( ctx ); if ( mask & DD_FRONT_LEFT_BIT ) { flags |= RADEON_FRONT; @@ -1028,13 +1071,6 @@ cx += dPriv->x; cy = dPriv->y + dPriv->h - cy - ch; - /* We have to emit state along with the clear, since the kernel relies on - * some of it. The EmitState that was above RADEON_FIREVERTICES was an - * attempt to do that, except that another context may come in and cause us - * to lose our context while we're unlocked. - */ - radeonEmitState( rmesa ); - LOCK_HARDWARE( rmesa ); /* Throttle the number of clear ioctls we do. @@ -1146,6 +1182,7 @@ } UNLOCK_HARDWARE( rmesa ); + rmesa->hw.all_dirty = GL_TRUE; } @@ -1189,8 +1226,7 @@ if (rmesa->dma.flush) rmesa->dma.flush( rmesa ); - if (!is_empty_list(&rmesa->hw.dirty)) - radeonEmitState( rmesa ); + radeonEmitState( rmesa ); if (rmesa->store.cmd_used) radeonFlushCmdBuf( rmesa, __FUNCTION__ ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.h --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.h 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_ioctl.h 2004-12-15 02:50:58.000000000 +0100 @@ -103,6 +103,7 @@ extern void radeonWaitForVBlank( radeonContextPtr rmesa ); extern void radeonInitIoctlFuncs( GLcontext *ctx ); extern void radeonGetAllParams( radeonContextPtr rmesa ); +extern void radeonSetUpAtomList( radeonContextPtr rmesa ); /* radeon_compat.c: */ @@ -111,7 +112,6 @@ GLuint hw_primitive, GLuint nrverts ); - /* ================================================================ * Helper macros: */ @@ -130,7 +130,8 @@ #define RADEON_STATECHANGE( rmesa, ATOM ) \ do { \ RADEON_NEWPRIM( rmesa ); \ - move_to_head( &(rmesa->hw.dirty), &(rmesa->hw.ATOM)); \ + rmesa->hw.ATOM.dirty = GL_TRUE; \ + rmesa->hw.is_dirty = GL_TRUE; \ } while (0) #define RADEON_DB_STATE( ATOM ) \ @@ -144,7 +145,8 @@ if (memcmp(atom->cmd, atom->lastcmd, atom->cmd_size*4)) { int *tmp; RADEON_NEWPRIM( rmesa ); - move_to_head( &(rmesa->hw.dirty), atom ); + atom->dirty = GL_TRUE; + rmesa->hw.is_dirty = GL_TRUE; tmp = atom->cmd; atom->cmd = atom->lastcmd; atom->lastcmd = tmp; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_lock.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_lock.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_lock.c 2004-06-16 11:18:20.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_lock.c 2004-12-15 02:50:58.000000000 +0100 @@ -124,4 +124,6 @@ DRI_AGE_TEXTURES( rmesa->texture_heaps[ i ] ); } } + + rmesa->lost_context = GL_TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_screen.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_screen.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_screen.c 2004-07-22 08:51:52.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_screen.c 2004-12-15 02:50:58.000000000 +0100 @@ -87,11 +87,14 @@ #define PCI_CHIP_RADEON_QZ 0x515A #define PCI_CHIP_RADEON_LW 0x4C57 /* mobility 7 - has tcl */ +#define PCI_CHIP_RADEON_LX 0x4C58 /* mobility FireGL 7800 m7 */ #define PCI_CHIP_RADEON_LY 0x4C59 #define PCI_CHIP_RADEON_LZ 0x4C5A #define PCI_CHIP_RV200_QW 0x5157 /* Radeon 7500 - not an R200 at all */ +#define PCI_CHIP_RV200_QX 0x5158 + /* IGP Chipsets */ #define PCI_CHIP_RS100_4136 0x4136 #define PCI_CHIP_RS200_4137 0x4137 @@ -309,7 +312,9 @@ case PCI_CHIP_RADEON_QF: case PCI_CHIP_RADEON_QG: case PCI_CHIP_RV200_QW: + case PCI_CHIP_RV200_QX: case PCI_CHIP_RADEON_LW: + case PCI_CHIP_RADEON_LX: screen->chipset |= RADEON_CHIPSET_TCL; case PCI_CHIP_RADEON_QY: case PCI_CHIP_RADEON_QZ: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_state_init.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_state_init.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_state_init.c 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_state_init.c 2004-12-15 02:50:58.000000000 +0100 @@ -59,8 +59,9 @@ fprintf(stderr, msg); fprintf(stderr, ": "); - foreach(l, &(rmesa->hw.dirty)) { - fprintf(stderr, "%s, ", l->name); + foreach(l, &rmesa->hw.atomlist) { + if (l->dirty || rmesa->hw.all_dirty) + fprintf(stderr, "%s, ", l->name); } fprintf(stderr, "\n"); @@ -197,11 +198,6 @@ rmesa->state.pixel.readOffset = rmesa->state.color.drawOffset; rmesa->state.pixel.readPitch = rmesa->state.color.drawPitch; - /* Initialize lists: - */ - make_empty_list(&(rmesa->hw.dirty)); - make_empty_list(&(rmesa->hw.clean)); - rmesa->hw.max_state_size = 0; #define ALLOC_STATE( ATOM, CHK, SZ, NM, FLAG ) \ @@ -212,7 +208,7 @@ rmesa->hw.ATOM.name = NM; \ rmesa->hw.ATOM.is_tcl = FLAG; \ rmesa->hw.ATOM.check = check_##CHK; \ - insert_at_head(&(rmesa->hw.dirty), &(rmesa->hw.ATOM)); \ + rmesa->hw.ATOM.dirty = GL_TRUE; \ rmesa->hw.max_state_size += SZ * sizeof(int); \ } while (0) @@ -256,6 +252,7 @@ ALLOC_STATE( txr[0], txr0, TXR_STATE_SIZE, "TXR/txr-0", 0 ); ALLOC_STATE( txr[1], txr1, TXR_STATE_SIZE, "TXR/txr-1", 0 ); + radeonSetUpAtomList( rmesa ); /* Fill in the packet headers: */ @@ -552,4 +549,6 @@ rmesa->hw.eye.cmd[EYE_Y] = 0; rmesa->hw.eye.cmd[EYE_Z] = IEEE_ONE; rmesa->hw.eye.cmd[EYE_RESCALE_FACTOR] = IEEE_ONE; + + rmesa->hw.all_dirty = GL_TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_subset_tex.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_subset_tex.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_subset_tex.c 2004-06-16 11:18:22.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_subset_tex.c 2004-12-15 02:50:58.000000000 +0100 @@ -75,8 +75,7 @@ if ( rmesa ) { if ( t == rmesa->state.texture.unit[0].texobj ) { rmesa->state.texture.unit[0].texobj = NULL; - remove_from_list( &rmesa->hw.tex[0] ); - make_empty_list( &rmesa->hw.tex[0] ); + rmesa->hw.tex[0].dirty = GL_FALSE; } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_swtcl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_swtcl.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_swtcl.c 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_swtcl.c 2005-01-13 02:10:28.000000000 +0100 @@ -564,9 +564,12 @@ #define EMIT_ELT(offset, x) do { \ int off = offset + ( ( (GLuint)dest & 0x2 ) >> 1 ); \ GLushort *des = (GLushort *)( (GLuint)dest & ~0x2 ); \ - (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); } while (0) + (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); \ + (void)rmesa; } while (0) #else -#define EMIT_ELT(offset, x) (dest)[offset] = (GLushort) (x) +#define EMIT_ELT(offset, x) do { \ + (dest)[offset] = (GLushort) (x); \ + (void)rmesa; } while (0) #endif #define EMIT_TWO_ELTS(offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x); #define INCR_ELTS( nr ) dest += nr diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_tcl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_tcl.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_tcl.c 2004-08-17 22:17:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_tcl.c 2005-01-13 02:10:28.000000000 +0100 @@ -169,7 +169,7 @@ * discrete and there are no intervening state changes. (Somewhat * duplicates changes to DrawArrays code) */ -static void EMIT_PRIM( GLcontext *ctx, +static void radeonEmitPrim( GLcontext *ctx, GLenum prim, GLuint hwprim, GLuint start, @@ -194,7 +194,9 @@ count - start ); } - +#define EMIT_PRIM( ctx, prim, hwprim, start, count ) do { \ + radeonEmitPrim( ctx, prim, hwprim, start, count ); \ + (void) rmesa; } while (0) /* Try & join small primitives */ @@ -214,9 +216,12 @@ #define EMIT_ELT(dest, offset, x) do { \ int off = offset + ( ( (GLuint)dest & 0x2 ) >> 1 ); \ GLushort *des = (GLushort *)( (GLuint)dest & ~0x2 ); \ - (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); } while (0) + (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); \ + (void)rmesa; } while (0) #else -#define EMIT_ELT(dest, offset, x) (dest)[offset] = (GLushort) (x) +#define EMIT_ELT(dest, offset, x) do { \ + (dest)[offset] = (GLushort) (x); \ + (void)rmesa; } while (0) #endif #define EMIT_TWO_ELTS(dest, offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_texmem.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_texmem.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_texmem.c 2004-06-16 11:18:23.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_texmem.c 2004-12-15 02:50:58.000000000 +0100 @@ -41,7 +41,6 @@ #include "imports.h" #include "context.h" #include "macros.h" -#include "simple_list.h" #include "radeon_context.h" #include "radeon_ioctl.h" @@ -66,8 +65,7 @@ for ( i = 0 ; i < rmesa->glCtx->Const.MaxTextureUnits ; i++ ) { if ( t == rmesa->state.texture.unit[i].texobj ) { rmesa->state.texture.unit[i].texobj = NULL; - remove_from_list( &rmesa->hw.tex[i] ); - make_empty_list( &rmesa->hw.tex[i] ); + rmesa->hw.tex[i].dirty = GL_FALSE; } } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_vtxfmt_c.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_vtxfmt_c.c --- xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_vtxfmt_c.c 2004-06-16 11:18:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/radeon/radeon_vtxfmt_c.c 2004-12-15 02:50:58.000000000 +0100 @@ -117,7 +117,7 @@ } - +#if 0 /* Color for ubyte (packed) color formats: */ static void radeon_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) @@ -159,7 +159,7 @@ radeonContextPtr rmesa = RADEON_CONTEXT(ctx); *(GLuint *)rmesa->vb.colorptr = LE32_TO_CPU(*(GLuint *)v); } - +#endif /* 0 */ static void radeon_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) { @@ -208,6 +208,7 @@ /* Color for float color+alpha formats: */ +#if 0 static void radeon_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -251,6 +252,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); dest[3] = UBYTE_TO_FLOAT(v[3]); } +#endif /* 0 */ static void radeon_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) @@ -300,6 +302,7 @@ /* Color for float color formats: */ +#if 0 static void radeon_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -341,6 +344,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(v[3]); } +#endif /* 0 */ static void radeon_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) @@ -388,6 +392,7 @@ /* Secondary Color: */ +#if 0 static void radeon_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -409,6 +414,7 @@ dest->blue = v[2]; dest->alpha = 0xff; } +#endif /* 0 */ static void radeon_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) { @@ -432,6 +438,7 @@ dest->alpha = 255; } +#if 0 static void radeon_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) { GET_CURRENT_CONTEXT(ctx); @@ -453,6 +460,7 @@ dest[2] = UBYTE_TO_FLOAT(v[2]); dest[3] = 1.0; } +#endif /* 0 */ static void radeon_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) { @@ -768,6 +776,7 @@ CHOOSE(Normal3fv, pfv, MASK_NORM, ACTIVE_NORM, (const GLfloat *v), (v)) +#if 0 CHOOSE_COLOR(Color4ub, p4ub, 4, MASK_COLOR, ACTIVE_COLOR, (GLubyte a,GLubyte b, GLubyte c, GLubyte d), (a,b,c,d)) CHOOSE_COLOR(Color4ubv, pubv, 4, MASK_COLOR, ACTIVE_COLOR, @@ -776,6 +785,7 @@ (GLubyte a,GLubyte b, GLubyte c), (a,b,c)) CHOOSE_COLOR(Color3ubv, pubv, 3, MASK_COLOR, ACTIVE_COLOR, (const GLubyte *v), (v)) +#endif CHOOSE_COLOR(Color4f, p4f, 4, MASK_COLOR, ACTIVE_COLOR, (GLfloat a,GLfloat b, GLfloat c, GLfloat d), (a,b,c,d)) @@ -787,10 +797,12 @@ (const GLfloat *v), (v)) +#if 0 CHOOSE_SECONDARY_COLOR(SecondaryColor3ubEXT, p3ub, MASK_SPEC, ACTIVE_SPEC, (GLubyte a,GLubyte b, GLubyte c), (a,b,c)) CHOOSE_SECONDARY_COLOR(SecondaryColor3ubvEXT, pubv, MASK_SPEC, ACTIVE_SPEC, (const GLubyte *v), (v)) +#endif CHOOSE_SECONDARY_COLOR(SecondaryColor3fEXT, p3f, MASK_SPEC, ACTIVE_SPEC, (GLfloat a,GLfloat b, GLfloat c), (a,b,c)) CHOOSE_SECONDARY_COLOR(SecondaryColor3fvEXT, pfv, MASK_SPEC, ACTIVE_SPEC, diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/savage/Makefile x11r682/xc/extras/Mesa/src/mesa/drivers/dri/savage/Makefile --- xc/extras/Mesa/src/mesa/drivers/dri/savage/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/drivers/dri/savage/Makefile 2004-12-15 02:50:59.000000000 +0100 @@ -0,0 +1,40 @@ +# src/mesa/drivers/dri/r128/Makefile + +TOP = ../../../../.. +include $(TOP)/configs/current + +LIBNAME = savage_dri.so + +# Doesn't exist yet. +#MINIGLX_SOURCES = server/savage_dri.c + +COMMON_SOURCES = \ + ../../common/driverfuncs.c \ + ../common/mm.c \ + ../common/utils.c \ + ../common/texmem.c \ + ../common/vblank.c \ + ../common/xmlconfig.c \ + ../common/dri_util.c \ + ../common/glcontextmodes.c + +DRIVER_SOURCES = \ + savage_xmesa.c \ + savagedd.c \ + savagestate.c \ + savagetex.c \ + savagetris.c \ + savageioctl.c \ + savagespan.c \ + savagedma.c + +C_SOURCES = \ + $(COMMON_SOURCES) \ + $(DRIVER_SOURCES) + +ASM_SOURCES = + + +include ../Makefile.template + +symlinks: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/savage/savage_xmesa.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/savage/savage_xmesa.c --- xc/extras/Mesa/src/mesa/drivers/dri/savage/savage_xmesa.c 2004-06-16 11:18:35.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/savage/savage_xmesa.c 2004-12-15 02:50:59.000000000 +0100 @@ -34,6 +34,8 @@ #include "simple_list.h" +#include "utils.h" + #include "swrast/swrast.h" #include "swrast_setup/swrast_setup.h" #include "tnl/tnl.h" @@ -55,6 +57,10 @@ #include "savagedma.h" +#ifdef USE_NEW_INTERFACE +static PFNGLXCREATECONTEXTMODES create_context_modes = NULL; +#endif /* USE_NEW_INTERFACE */ + #ifndef SAVAGE_DEBUG int SAVAGE_DEBUG = (0 /* | DEBUG_ALWAYS_SYNC */ @@ -88,31 +94,6 @@ SAVAGEDRIPtr gDRIPriv = (SAVAGEDRIPtr)sPriv->pDevPriv; - /* Check the DRI version */ - { - int major, minor, patch; - if (XF86DRIQueryVersion(sPriv->display, &major, &minor, &patch)) { - if (major != 4 || minor < 0) { - __driUtilMessage("savage DRI driver expected DRI version 4.0.x but got version %d.%d.%d", major, minor, patch); - return GL_FALSE; - } - } - } - - /* Check that the DDX driver version is compatible */ - if (sPriv->ddxMajor != 1 || - sPriv->ddxMinor < 0) { - __driUtilMessage("savage DRI driver expected DDX driver version 1.0.x but got version %d.%d.%d", sPriv->ddxMajor, sPriv->ddxMinor, sPriv->ddxPatch); - return GL_FALSE; - } - - /* Check that the DRM driver version is compatible */ - if (sPriv->drmMajor != 1 || - sPriv->drmMinor < 0) { - __driUtilMessage("savage DRI driver expected DRM driver version 1.1.x but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch); - return GL_FALSE; - } - /* Allocate the private area */ savageScreen = (savageScreenPrivate *)Xmalloc(sizeof(savageScreenPrivate)); if (!savageScreen) @@ -813,8 +794,9 @@ +#ifndef DRI_NEW_INTERFACE_ONLY /* - * This is the bootstrap function for the driver. + * This is the (old) bootstrap function for the driver. * The __driCreateScreen name is the symbol that libGL.so fetches. * Return: pointer to a __DRIscreenPrivate. */ @@ -825,6 +807,147 @@ psp = __driUtilCreateScreen(dpy, scrn, psc, numConfigs, config, &savageAPI); return (void *) psp; } +#endif /* DRI_NEW_INTERFACE_ONLY */ + + + +#ifdef USE_NEW_INTERFACE +static __GLcontextModes * +savageFillInModes( unsigned pixel_bits, unsigned depth_bits, + unsigned stencil_bits, GLboolean have_back_buffer ) +{ + __GLcontextModes * modes; + __GLcontextModes * m; + unsigned num_modes; + unsigned depth_buffer_factor; + unsigned back_buffer_factor; + GLenum fb_format; + GLenum fb_type; + + /* Right now GLX_SWAP_COPY_OML isn't supported, but it would be easy + * enough to add support. Basically, if a context is created with an + * fbconfig where the swap method is GLX_SWAP_COPY_OML, pageflipping + * will never be used. + * + * FK: What about drivers that don't use page flipping? Could they + * just expose GLX_SWAP_COPY_OML? + */ + static const GLenum back_buffer_modes[] = { + GLX_NONE, GLX_SWAP_UNDEFINED_OML /*, GLX_SWAP_COPY_OML */ + }; + + uint8_t depth_bits_array[2]; + uint8_t stencil_bits_array[2]; + + + depth_bits_array[0] = depth_bits; + depth_bits_array[1] = depth_bits; + + /* Just like with the accumulation buffer, always provide some modes + * with a stencil buffer. It will be a sw fallback, but some apps won't + * care about that. + */ + stencil_bits_array[0] = 0; + stencil_bits_array[1] = (stencil_bits == 0) ? 8 : stencil_bits; + + depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 2 : 1; + back_buffer_factor = (have_back_buffer) ? 2 : 1; + + num_modes = depth_buffer_factor * back_buffer_factor * 4; + + if ( pixel_bits == 16 ) { + fb_format = GL_RGB; + fb_type = GL_UNSIGNED_SHORT_5_6_5; + } + else { + fb_format = GL_BGR; + fb_type = GL_UNSIGNED_INT_8_8_8_8_REV; + } + + modes = (*create_context_modes)( num_modes, sizeof( __GLcontextModes ) ); + m = modes; + if ( ! driFillInModes( & m, fb_format, fb_type, + depth_bits_array, stencil_bits_array, depth_buffer_factor, + back_buffer_modes, back_buffer_factor, + GLX_TRUE_COLOR ) ) { + fprintf( stderr, "[%s:%u] Error creating FBConfig!\n", + __func__, __LINE__ ); + return NULL; + } + + if ( ! driFillInModes( & m, fb_format, fb_type, + depth_bits_array, stencil_bits_array, depth_buffer_factor, + back_buffer_modes, back_buffer_factor, + GLX_DIRECT_COLOR ) ) { + fprintf( stderr, "[%s:%u] Error creating FBConfig!\n", + __func__, __LINE__ ); + return NULL; + } + + /* Mark the visual as slow if there are "fake" stencil bits. + */ + for ( m = modes ; m != NULL ; m = m->next ) { + if ( (m->stencilBits != 0) && (m->stencilBits != stencil_bits) ) { + m->visualRating = GLX_SLOW_CONFIG; + } + } + + return modes; +} + + +/** + * This is the bootstrap function for the driver. libGL supplies all of the + * requisite information about the system, and the driver initializes itself. + * This routine also fills in the linked list pointed to by \c driver_modes + * with the \c __GLcontextModes that the driver can support for windows or + * pbuffers. + * + * \return A pointer to a \c __DRIscreenPrivate on success, or \c NULL on + * failure. + */ +void * __driCreateNewScreen( __DRInativeDisplay *dpy, int scrn, __DRIscreen *psc, + const __GLcontextModes * modes, + const __DRIversion * ddx_version, + const __DRIversion * dri_version, + const __DRIversion * drm_version, + const __DRIframebuffer * frame_buffer, + drmAddress pSAREA, int fd, + int internal_api_version, + __GLcontextModes ** driver_modes ) + +{ + __DRIscreenPrivate *psp; + static const __DRIversion ddx_expected = { 1, 0, 0 }; + static const __DRIversion dri_expected = { 4, 0, 0 }; + static const __DRIversion drm_expected = { 1, 0, 0 }; + if ( ! driCheckDriDdxDrmVersions2( "Savage", + dri_version, & dri_expected, + ddx_version, & ddx_expected, + drm_version, & drm_expected ) ) { + return NULL; + } + + psp = __driUtilCreateNewScreen(dpy, scrn, psc, NULL, + ddx_version, dri_version, drm_version, + frame_buffer, pSAREA, fd, + internal_api_version, &savageAPI); + if ( psp != NULL ) { + create_context_modes = (PFNGLXCREATECONTEXTMODES) + glXGetProcAddress( (const GLubyte *) "__glXCreateContextModes" ); + if ( create_context_modes != NULL ) { + SAVAGEDRIPtr dri_priv = (SAVAGEDRIPtr)psp->pDevPriv; + *driver_modes = savageFillInModes( dri_priv->cpp*8, + (dri_priv->cpp == 2) ? 16 : 24, + (dri_priv->cpp == 2) ? 0 : 8, + (dri_priv->backOffset != dri_priv->depthOffset) ); + } + } + + return (void *) psp; +} +#endif /* USE_NEW_INTERFACE */ + #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/savage/savagecontext.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/savage/savagecontext.h --- xc/extras/Mesa/src/mesa/drivers/dri/savage/savagecontext.h 2004-06-16 11:18:35.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/savage/savagecontext.h 2004-12-15 02:50:59.000000000 +0100 @@ -37,7 +37,6 @@ #include "xf86drm.h" #include "drm.h" #include "savage_drm.h" -#include "savage_sarea.h" #include "savage_init.h" #include "mm.h" #include "tnl/t_vertex.h" @@ -237,7 +236,7 @@ unsigned int texAge[SAVAGE_NR_TEX_HEAPS]; drm_context_t hHWContext; - drmLock *driHwLock; + drm_hw_lock_t *driHwLock; GLuint driFd; __DRIdrawablePrivate *driDrawable; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_dd.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_dd.c --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_dd.c 2004-06-16 11:18:25.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_dd.c 2004-12-15 02:50:59.000000000 +0100 @@ -44,7 +44,7 @@ #include "utils.h" -#define DRIVER_DATE "20040608" +#define DRIVER_DATE "20040925" /* Return the width and height of the given buffer. */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_reg.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_reg.h --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_reg.h 2004-06-16 11:18:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_reg.h 2004-12-15 02:50:59.000000000 +0100 @@ -640,13 +640,13 @@ #define SiS_S_BOTH_ONE_MINUS_SRC_ALPHA 0x0000000c /* - * REG_3D_DstBlendMode (0x8A54 - 0x8A57) + * REG_3D_ClipTopBottom (0x8A54 - 0x8A57) */ #define MASK_BottomClip 0x00001FFF #define MASK_TopClip 0x03FFE000 /* - * REG_3D_DstBlendMode (0x8A58 - 0x8A5B) + * REG_3D_ClipLeftRight (0x8A58 - 0x8A5B) */ #define MASK_RightClip 0x00001FFF #define MASK_LeftClip 0x03FFE000 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_screen.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_screen.c --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_screen.c 2004-07-22 08:51:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_screen.c 2004-12-15 02:50:59.000000000 +0100 @@ -46,7 +46,7 @@ const char __driConfigOptions[] = DRI_CONF_BEGIN DRI_CONF_SECTION_DEBUG - DRI_CONF_OPT_BEGIN(agp_disable,bool,true) + DRI_CONF_OPT_BEGIN(agp_disable,bool,false) DRI_CONF_DESC(en,"Disable AGP vertex dispatch") DRI_CONF_OPT_END DRI_CONF_OPT_BEGIN(fallback_force,bool,false) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_state.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_state.c --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_state.c 2004-06-16 11:18:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_state.c 2004-12-15 02:50:59.000000000 +0100 @@ -441,9 +441,6 @@ __GLSiSHardware *prev = &smesa->prev; __GLSiSHardware *current = &smesa->current; - if (!ctx->Color.ColorLogicOpEnabled) - return; - current->hwDstSet &= ~MASK_ROP2; switch (opcode) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.c --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.c 2004-07-22 08:51:59.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.c 2004-12-15 02:50:59.000000000 +0100 @@ -611,7 +611,7 @@ #define POINT_FALLBACK (DD_POINT_SMOOTH) #define LINE_FALLBACK (DD_LINE_STIPPLE|DD_LINE_SMOOTH) -#define TRI_FALLBACK (DD_TRI_SMOOTH) +#define TRI_FALLBACK (DD_TRI_STIPPLE|DD_TRI_SMOOTH) #define ANY_FALLBACK_FLAGS (POINT_FALLBACK|LINE_FALLBACK|TRI_FALLBACK) #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED) #define _SIS_NEW_RENDER_STATE (ANY_RASTER_FLAGS | ANY_FALLBACK_FLAGS) @@ -889,7 +889,8 @@ void sisFlushPrimsLocked(sisContextPtr smesa) { - GLuint *start; + if (smesa->vb_cur == smesa->vb_last) + return; sisUpdateHWState(smesa->glCtx); @@ -898,7 +899,7 @@ mEndPrimitive(); MMIO(REG_3D_AGPCmBase, (smesa->vb_last - smesa->vb) + smesa->vb_agp_offset); - MMIO(REG_3D_AGPTtDwNum, (smesa->vb_cur - smesa->vb_last) / 4 | + MMIO(REG_3D_AGPTtDwNum, ((smesa->vb_cur - smesa->vb_last) / 4) | 0x50000000); MMIO(REG_3D_ParsingSet, smesa->AGPParseSet); MMIO(REG_3D_AGPCmFire, (GLint)(-1)); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.h --- xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.h 2004-06-16 11:18:27.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/sis/sis_tris.h 2004-12-15 02:50:59.000000000 +0100 @@ -51,6 +51,7 @@ static __inline GLuint *sisAllocDmaLow(sisContextPtr smesa, int bytes) { GLuint *start; + if (smesa->vb_cur + bytes >= smesa->vb_end) { LOCK_HARDWARE(); sisFlushPrimsLocked(smesa); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_context.c 2004-08-13 01:06:08.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_context.c 2004-12-15 02:50:59.000000000 +0100 @@ -75,6 +75,7 @@ _mesa_enable_extension( ctx, "GL_EXT_texture_lod_bias" ); _mesa_enable_extension( ctx, "GL_EXT_blend_func_separate" ); _mesa_enable_extension( ctx, "GL_EXT_fog_coord" ); + _mesa_enable_extension( ctx, "GL_EXT_texture_env_add" ); #if 0 _mesa_enable_extension(ctx, "GL_EXT_secondary_color"); @@ -83,7 +84,6 @@ #endif if ( fxMesa->haveTwoTMUs ) { - _mesa_enable_extension( ctx, "GL_EXT_texture_env_add" ); _mesa_enable_extension( ctx, "GL_ARB_multitexture" ); } @@ -97,9 +97,7 @@ _mesa_enable_extension( ctx, "GL_EXT_blend_subtract" ); _mesa_enable_extension( ctx, "GL_EXT_blend_equation_separate" ); } else { -#if 0 /*[dBorca] cannot handle 565. badbad! revise*/ _mesa_enable_extension( ctx, "GL_SGIS_generate_mipmap" ); -#endif } if (fxMesa->haveHwStencil) { @@ -112,6 +110,7 @@ if (TDFX_IS_NAPALM(fxMesa)/*fxMesa->Glide.HaveCombineExt - JJJ*/) { _mesa_enable_extension( ctx, "GL_EXT_texture_env_combine" ); + _mesa_enable_extension( ctx, "GL_ARB_texture_env_combine" ); } /* core-level extensions */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_render.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_render.c --- xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_render.c 2004-08-13 01:06:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_render.c 2004-12-15 02:50:59.000000000 +0100 @@ -501,7 +501,7 @@ fxMesa->Glide.grTexClampMode(GR_TMU0 + unit, p->sClamp, p->tClamp); fxMesa->Glide.grTexFilterMode(GR_TMU0 + unit, p->minFilt, p->magFilt); fxMesa->Glide.grTexMipMapMode(GR_TMU0 + unit, p->mmMode, p->LODblend); - fxMesa->Glide.grTexLodBiasValue(GR_TMU0 + unit, p->LodBias); + fxMesa->Glide.grTexLodBiasValue(GR_TMU0 + unit, CLAMP(p->LodBias, -8, 7.75)); } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_tex.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_tex.c --- xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_tex.c 2004-07-22 08:52:01.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_tex.c 2004-12-15 02:50:59.000000000 +0100 @@ -49,19 +49,56 @@ #include "tdfx_texman.h" +/* no borders! can't halve 1x1! (stride > width * comp) not allowed */ void -_mesa_halve2x2_teximage2d ( GLuint bytesPerPixel, +_mesa_halve2x2_teximage2d ( GLcontext *ctx, + struct gl_texture_image *texImage, + GLuint bytesPerPixel, GLint srcWidth, GLint srcHeight, const GLvoid *srcImage, GLvoid *dstImage ) { GLint i, j, k; - const GLint dstWidth = srcWidth / 2; - const GLint dstHeight = srcHeight / 2; - const GLint srcRowStride = srcWidth * bytesPerPixel; - const GLubyte *src = srcImage; + GLint dstWidth = srcWidth / 2; + GLint dstHeight = srcHeight / 2; + GLint srcRowStride = srcWidth * bytesPerPixel; + GLubyte *src = (GLubyte *)srcImage; GLubyte *dst = dstImage; - /* no borders! can't halve 1x1! (stride > width * comp) not allowed */ + GLuint bpt = 0; + GLubyte *_s = NULL; + GLubyte *_d = NULL; + GLenum _t; + + if (texImage->TexFormat->MesaFormat == MESA_FORMAT_RGB565) { + _t = GL_UNSIGNED_SHORT_5_6_5_REV; + bpt = bytesPerPixel; + } else if (texImage->TexFormat->MesaFormat == MESA_FORMAT_ARGB4444) { + _t = GL_UNSIGNED_SHORT_4_4_4_4_REV; + bpt = bytesPerPixel; + } else if (texImage->TexFormat->MesaFormat == MESA_FORMAT_ARGB1555) { + _t = GL_UNSIGNED_SHORT_1_5_5_5_REV; + bpt = bytesPerPixel; + } + if (bpt) { + bytesPerPixel = 4; + srcRowStride = srcWidth * bytesPerPixel; + if (dstWidth == 0) { + dstWidth = 1; + } + if (dstHeight == 0) { + dstHeight = 1; + } + _s = src = MALLOC(srcRowStride * srcHeight); + _d = dst = MALLOC(dstWidth * bytesPerPixel * dstHeight); + _mesa_texstore_rgba8888(ctx, 2, GL_RGBA, + &_mesa_texformat_rgba8888_rev, src, + 0, 0, 0, /* dstX/Y/Zoffset */ + srcRowStride, /* dstRowStride */ + 0, /* dstImageStride */ + srcWidth, srcHeight, 1, + texImage->Format, _t, srcImage, &ctx->DefaultPacking); + } + if (srcHeight == 1) { for (i = 0; i < dstWidth; i++) { for (k = 0; k < bytesPerPixel; k++) { @@ -96,6 +133,20 @@ src += srcRowStride; } } + + if (bpt) { + src = _s; + dst = _d; + texImage->TexFormat->StoreImage(ctx, 2, texImage->Format, + texImage->TexFormat, dstImage, + 0, 0, 0, /* dstX/Y/Zoffset */ + dstWidth * bpt, + 0, /* dstImageStride */ + dstWidth, dstHeight, 1, + GL_BGRA, CHAN_TYPE, dst, &ctx->DefaultPacking); + FREE(dst); + FREE(src); + } } @@ -1363,7 +1414,9 @@ NULL); mipImage = _mesa_select_tex_image(ctx, texUnit, target, level); mip = TDFX_TEXIMAGE_DATA(mipImage); - _mesa_halve2x2_teximage2d(texelBytes, + _mesa_halve2x2_teximage2d(ctx, + texImage, + texelBytes, mml->width, mml->height, texImage->Data, mipImage->Data); texImage = mipImage; @@ -1470,7 +1523,9 @@ ++level; mipImage = _mesa_select_tex_image(ctx, texUnit, target, level); mip = TDFX_TEXIMAGE_DATA(mipImage); - _mesa_halve2x2_teximage2d(texelBytes, + _mesa_halve2x2_teximage2d(ctx, + texImage, + texelBytes, mml->width, mml->height, texImage->Data, mipImage->Data); texImage = mipImage; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_vb.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_vb.c --- xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_vb.c 2004-07-22 08:52:03.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/tdfx/tdfx_vb.c 2004-12-15 02:50:59.000000000 +0100 @@ -300,6 +300,8 @@ } else if (ctx->Texture._EnabledUnits & 0x1) { /* unit 0 enabled */ ind |= TDFX_W_BIT|TDFX_TEX0_BIT; + } else if (fxMesa->Fog.Mode != GR_FOG_DISABLE) { + ind |= TDFX_W_BIT; } if (fxMesa->Fog.Mode == GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile 2004-06-16 11:18:36.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/Makefile 2004-12-15 02:50:59.000000000 +0100 @@ -30,6 +30,7 @@ via_texstate.c \ via_tris.c \ via_vb.c \ + via_texcombine.c \ xf86drmVIA.c C_SOURCES = \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c 2004-07-22 08:52:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.c 2004-12-15 02:50:59.000000000 +0100 @@ -59,7 +59,7 @@ #include #include "macros.h" -#define DRIVER_DATE "20020221" +#define DRIVER_DATE "20040923" #include "utils.h" @@ -136,6 +136,110 @@ } } + +/** + * Calculate a width that satisfies the hardware's alignment requirements. + * On the Unichrome hardware, each scanline must be aligned to a multiple of + * 16 pixels. + * + * \param width Minimum buffer width, in pixels. + * + * \returns A pixel width that meets the alignment requirements. + */ +static __inline__ unsigned +buffer_align( unsigned width ) +{ + return (width + 0x0f) & ~0x0f; +} + + +/** + * Calculate the framebuffer parameters for all buffers (front, back, depth, + * and stencil) associated with the specified context. + * + * \warning + * This function also calls \c AllocateBuffer to actually allocate the + * buffers. + * + * \sa AllocateBuffer + */ +static GLboolean +calculate_buffer_parameters( viaContextPtr vmesa ) +{ + const unsigned shift = vmesa->viaScreen->bitsPerPixel / 16; + const unsigned extra = (vmesa->drawType == GLX_PBUFFER_BIT) ? 0 : 32; + unsigned w; + unsigned h; + + if (vmesa->drawType == GLX_PBUFFER_BIT) { + w = vmesa->driDrawable->w; + h = vmesa->driDrawable->h; + } + else { + w = vmesa->viaScreen->width; + h = vmesa->viaScreen->height; + + vmesa->front.offset = 0; + vmesa->front.map = (char *) vmesa->driScreen->pFB; + } + + vmesa->front.pitch = buffer_align( w ) << shift; + vmesa->front.size = vmesa->front.pitch * h; + + + /* Allocate back-buffer */ + + vmesa->back.pitch = (buffer_align( vmesa->driDrawable->w ) << shift) + + extra; + vmesa->back.size = vmesa->back.pitch * vmesa->driDrawable->h; + +#ifdef DEBUG + if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent backbuffer: w = %d h = %d bpp = %d sizs = %d\n", + vmesa->back.pitch, + vmesa->driDrawable->h, + 8 << shift, + vmesa->back.size); +#endif + + /* Allocate depth-buffer */ + if ( vmesa->hasStencil || vmesa->hasDepth ) { + const unsigned dShift = (vmesa->hasStencil) + ? 2 : (vmesa->depthBits / 16); + + vmesa->depth.pitch = (buffer_align( vmesa->driDrawable->w ) << dShift) + + extra; + vmesa->depth.bpp = 8 << dShift; + vmesa->depth.size = vmesa->depth.pitch * vmesa->driDrawable->h; + } + else { + (void) memset( & vmesa->depth, 0, sizeof( vmesa->depth ) ); + } + +#ifdef DEBUG + if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent depthbuffer: w = %d h = %d bpp = %d sizs = %d\n", + vmesa->depth.pitch, + vmesa->driDrawable->h, + vmesa->depth.bpp, + vmesa->depth.size); +#endif + + /*=* John Sheng [2003.5.31] flip *=*/ + if( (vmesa->viaScreen->width == vmesa->driDrawable->w) + && (vmesa->viaScreen->height == vmesa->driDrawable->h) ) { + vmesa->doPageFlip = GL_FALSE; + vmesa->currentPage = 0; + vmesa->back.pitch = vmesa->front.pitch; + } + + if (!AllocateBuffer(vmesa)) { + FREE(vmesa); + return GL_FALSE; + } + + return GL_TRUE; +} + + void viaReAllocateBuffers(GLframebuffer *drawbuffer) { GLcontext *ctx; @@ -152,95 +256,11 @@ vmesa->driDrawable->w = ctx->DrawBuffer->Width; vmesa->driDrawable->h = ctx->DrawBuffer->Height; + LOCK_HARDWARE(vmesa); - - /* Allocate back & depth buffer */ - { - int w, h, bpp; - w = vmesa->driDrawable->w; - h = vmesa->driDrawable->h; - /* back buffer */ - bpp = vmesa->viaScreen->bitsPerPixel; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "driScreen->fbBPP = %d\n", bpp); -#endif - if (bpp == 32) { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - vmesa->back.size = w * h * bpp / 8; - vmesa->back.pitch = w << 2; - } - else { - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2 + 16; - vmesa->back.size = w * h * bpp / 8; - vmesa->back.pitch = w << 1; - } -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "resizebuffer backbuffer: w = %d h = %d bpp = %d sizs = %d\n", - w, h, bpp, vmesa->back.size); -#endif - /* depth buffer */ - w = vmesa->driDrawable->w; - if (vmesa->hasDepth && vmesa->hasStencil) { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 24\n"); - if (VIA_DEBUG) fprintf(stderr, "StencilBits = 8\n"); -#endif - } - else if (vmesa->hasDepth) { - /*=* John Sheng [2003.6.16] patch viewperf drv-08 draw nothing */ - /*if(vmesa->viaScreen->bitsPerPixel == 32)*/ - /*vmesa->depthBits = 16;*/ - - if (vmesa->depthBits == 16) { - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2 + 16; - vmesa->depth.size = w * h * 2; - vmesa->depth.pitch = w << 1; - vmesa->depth.bpp = 16; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 16\n"); -#endif - } - else { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 32\n"); -#endif - } - } - else if (vmesa->hasStencil) { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "StencilBits = 8\n"); -#endif - } -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "resizebuffer depthbuffer: w = %d h = %d bpp = %d sizs = %d\n", - w, h, vmesa->depth.bpp, vmesa->depth.size); -#endif - /*=* John Sheng [2003.5.31] flip *=*/ - { - if(vmesa->viaScreen->width == vmesa->driDrawable->w && - vmesa->viaScreen->height == vmesa->driDrawable->h) { - vmesa->back.pitch = vmesa->front.pitch; - vmesa->back.size = vmesa->front.size; - } - } - - if (!AllocateBuffer(vmesa)) { - FREE(vmesa); - } - } + calculate_buffer_parameters( vmesa ); UNLOCK_HARDWARE(vmesa); + #ifdef DEBUG if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__); #endif @@ -263,12 +283,12 @@ "GL_ARB_texture_env_add", "GL_ARB_texture_env_combine", /* John Sheng [2003.7.18] tex combine */ "GL_ARB_texture_env_dot3", /* John Sheng [2003.7.18] tex dot3 */ - "GL_EXT_point_parameters", /* John Sheng [2003.7.18] point param. */ + "GL_ARB_texture_mirrored_repeat", "GL_EXT_stencil_wrap", - "GL_EXT_texture_env_add", "GL_EXT_texture_env_combine", /* John Sheng [2003.7.18] tex combine */ "GL_EXT_texture_env_dot3", /* John Sheng [2003.7.18] tex dot3 */ "GL_EXT_texture_lod_bias", + "GL_NV_blend_square", NULL }; @@ -440,6 +460,8 @@ ctx->Const.MaxTextureLevels = 11; ctx->Const.MaxTextureUnits = 2; + ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits; + ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits; ctx->Const.MinLineWidth = 1.0; ctx->Const.MinLineWidthAA = 1.0; @@ -567,12 +589,12 @@ if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__); #endif { - GLboolean saam; - int count = 0, fbSize; #ifndef USE_XINERAMA vmesa->saam = 0; #else - saam = XineramaIsActive(vmesa->display); + GLboolean saam = XineramaIsActive(vmesa->display); + int count = 0, fbSize; + if (saam && vmesa->viaScreen->drixinerama) { vmesa->xsi = XineramaQueryScreens(vmesa->display, &count); /* Test RightOf or Down */ @@ -716,8 +738,10 @@ void viaXMesaWindowMoved(viaContextPtr vmesa) { GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3; +#ifdef USE_XINERAMA GLuint side = 0; __DRIdrawablePrivate *dPriv = vmesa->driDrawable; +#endif switch (vmesa->glCtx->Color._DrawDestMask) { case __GL_FRONT_BUFFER_MASK: @@ -904,178 +928,22 @@ fprintf(stderr, "driContextPriv = %08x\n", (GLuint)driReadPriv); } #endif - + if (driContextPriv) { viaContextPtr vmesa = (viaContextPtr)driContextPriv->driverPrivate; - current_mesa = vmesa; - - vmesa->driDrawable = driDrawPriv; - if (vmesa->drawType == GLX_PBUFFER_BIT) { - int w, h, bpp; - - w = vmesa->driDrawable->w; - h = vmesa->driDrawable->h; - bpp = vmesa->viaScreen->bitsPerPixel; - if (bpp == 32) { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - vmesa->front.size = w * h * bpp / 8; - vmesa->front.pitch = w << 2; - } - else { - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2; - vmesa->front.size = w * h * bpp / 8; - vmesa->front.pitch = w << 1; - } - } - /*=* John Sheng [2003.6.20] fix resolution 720x480/720x576 front pitch error *=*/ - else { - GLuint w; - GLuint h; - GLuint bpp; - bpp = vmesa->viaScreen->bitsPerPixel; - h = vmesa->viaScreen->height; - w = vmesa->viaScreen->width; - if (bpp == 0x20) { - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - vmesa->front.size = w * h * bpp / 8; - vmesa->front.pitch = w << 2; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "viaScreen->bitsPerPixel = %d\n", 32); -#endif - } - else if (bpp == 0x10) { - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2; - vmesa->front.size = w * h * bpp / 8; - vmesa->front.pitch = w << 1; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "viaScreen->bitsPerPixel = %d\n", 16); -#endif - } - vmesa->front.offset = 0; - vmesa->front.map = (char *) vmesa->driScreen->pFB; - vmesa->front.size = w * h * vmesa->viaScreen->bitsPerPixel /8; - } - - /* Allocate back & depth buffer */ - { - int w, h, bpp; - - w = vmesa->driDrawable->w; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent: w = %d\n", w); -#endif - h = vmesa->driDrawable->h; - - /* back buffer */ - bpp = vmesa->viaScreen->bitsPerPixel; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "driScreen->fbBPP = %d\n", bpp); -#endif - if (bpp == 32) { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - else - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - - vmesa->back.size = w * h * bpp / 8; - vmesa->back.pitch = w << 2; - } - else { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2; - else - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2 + 16; - - vmesa->back.size = w * h * bpp / 8; - vmesa->back.pitch = w << 1; - } -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent backbuffer: w = %d h = %d bpp = %d sizs = %d\n", - w, h, bpp, vmesa->back.size); -#endif - /* depth buffer */ - w = vmesa->driDrawable->w; - if (vmesa->hasDepth && vmesa->hasStencil) { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - else - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 24\n"); - if (VIA_DEBUG) fprintf(stderr, "StencilBits = 8\n"); -#endif - } - else if (vmesa->hasDepth) { + current_mesa = vmesa; - /*=* John Sheng [2003.6.16] patch viewperf drv-08 draw nothing */ - /*if(vmesa->viaScreen->bitsPerPixel == 32)*/ - /*vmesa->depthBits = 16;*/ - - if (vmesa->depthBits == 16) { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2; - else - w = BUFFER_ALIGN_WIDTH(w * 2, BUFFER_ALIGNMENT) / 2 + 16; - - vmesa->depth.size = w * h * 2; - vmesa->depth.pitch = w << 1; - vmesa->depth.bpp = 16; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 16\n"); -#endif - } - else { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - else - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; #ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "depthBits = 32\n"); -#endif - } - } - else if (vmesa->hasStencil) { - if (vmesa->drawType == GLX_PBUFFER_BIT) - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4; - else - w = BUFFER_ALIGN_WIDTH(w * 4, BUFFER_ALIGNMENT) / 4 + 8; - - vmesa->depth.size = w * h * 4; - vmesa->depth.pitch = w << 2; - vmesa->depth.bpp = 32; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "StencilBits = 8\n"); + if (VIA_DEBUG) fprintf(stderr, "viaScreen->bitsPerPixel = %d\n", viaScreen->bitsPerPixel); + if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent: w = %d\n", vmesa->driDrawable->w); #endif - } -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent depthbuffer: w = %d h = %d bpp = %d sizs = %d\n", - w, h, vmesa->depth.bpp, vmesa->depth.size); -#endif - /*=* John Sheng [2003.5.31] flip *=*/ - { - viaContextPtr vmesa = (viaContextPtr)driContextPriv->driverPrivate; - if(vmesa->viaScreen->width == vmesa->driDrawable->w && - vmesa->viaScreen->height == vmesa->driDrawable->h) { - vmesa->doPageFlip = GL_FALSE; - vmesa->currentPage = 0; - vmesa->back.pitch = vmesa->front.pitch; - } - } - if (!AllocateBuffer(vmesa)) { - FREE(vmesa); - return GL_FALSE; - } + vmesa->driDrawable = driDrawPriv; + if ( ! calculate_buffer_parameters( vmesa ) ) { + return GL_FALSE; } + _mesa_make_current2(vmesa->glCtx, (GLframebuffer *)driDrawPriv->driverPrivate, (GLframebuffer *)driReadPriv->driverPrivate); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h 2004-07-22 08:52:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_context.h 2004-12-15 02:50:59.000000000 +0100 @@ -75,10 +75,7 @@ #define TAG(x) via##x #include "tnl_dd/t_dd_vertex.h" #undef TAG -#define BUFFER_ALIGNMENT 32 -#define BUFFER_ALIGN_WIDTH1(w, a) (((w) + ((a) - 1)) & ~((a) - 1)) -#define BUFFER_ALIGN_WIDTH(w, a) (((w) & ((a) - 1)) ? BUFFER_ALIGN_WIDTH1(w, a) : (w)) -#define BUFFER_ALIGN_ADDRESS(p, a) ((GLvoid *)(((GLint)(p)) + ((a)-1) & ~((a)-1))) + #define RightOf 1 #define LeftOf 2 #define Down 4 @@ -451,6 +448,9 @@ extern void viaReAllocateBuffers(GLframebuffer *drawbuffer); extern void viaXMesaWindowMoved(viaContextPtr vmesa); +extern void viaTexCombineState(viaContextPtr vmesa, + const struct gl_tex_env_combine_state * combine, unsigned unit ); + #define SUBPIXEL_X -.5 #define SUBPIXEL_Y -.5 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c 2004-06-16 11:18:37.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.c 2004-12-15 02:50:59.000000000 +0100 @@ -313,7 +313,6 @@ #ifdef DEBUG if (VIA_DEBUG) fprintf(stderr, "%s SwapPBuffers\n", __FUNCTION__); #endif /*=* [DBG] for pbuffer *=*/ - /*viaDoSwapBufferSoftFront(vmesa);*/ } else { GLuint scrn = 0; @@ -1436,83 +1435,7 @@ #endif } -void viaDoSwapBufferSoft(viaContextPtr vmesa) -{ - GLuint nFrontPitch; - GLuint nBackPitch; - GLuint nFrontBase, nBackBase; - GLuint i, j; - GLubyte *by, *fy; - GLuint w; - - w = vmesa->viaScreen->width; - w = BUFFER_ALIGN_WIDTH(w, BUFFER_ALIGNMENT); - - if (vmesa->viaScreen->bitsPerPixel == 0x20) - nFrontPitch = w << 2; - else - nFrontPitch = w << 1; - - nBackPitch = vmesa->back.pitch; - - /* Caculate Base */ - nFrontBase = (GLuint) vmesa->driScreen->pFB; - nBackBase = ((GLuint) vmesa->back.offset) + ((GLuint) vmesa->driScreen->pFB); - by = (GLubyte *) nBackBase; - fy = (GLubyte *) nFrontBase; - - viaFlushPrimsLocked(vmesa); - - for (i = 0; i < vmesa->driDrawable->h; i++) { - fy = (GLubyte *)(nFrontBase + i * nFrontPitch); - for (j = 0; j < nBackPitch; j++) { - *((GLubyte*)fy) = *((GLubyte*)by); - fy = fy + 1; - by = by + 1; - } - - } - -} -void viaDoSwapBufferSoftFront(viaContextPtr vmesa) -{ - GLuint nFrontPitch; - GLuint nBackPitch; - GLuint nFrontBase, nBackBase; - GLuint i, j; - GLubyte *by, *fy; - GLuint w; - - w = vmesa->viaScreen->width; - w = BUFFER_ALIGN_WIDTH(w, BUFFER_ALIGNMENT); - - if (vmesa->viaScreen->bitsPerPixel == 0x20) - nFrontPitch = w << 2; - else - nFrontPitch = w << 1; - - nBackPitch = vmesa->front.pitch; - - /* Caculate Base */ - nFrontBase = (GLuint) vmesa->driScreen->pFB; - nBackBase = ((GLuint) vmesa->front.offset) + ((GLuint) vmesa->driScreen->pFB); - by = (GLubyte *) nBackBase; - fy = (GLubyte *) nFrontBase; - - viaFlushPrimsLocked(vmesa); - - for (i = 0; i < vmesa->driDrawable->h; i++) { - fy = (GLubyte *)(nFrontBase + i * nFrontPitch); - for (j = 0; j < nBackPitch; j++) { - *((GLubyte*)fy) = *((GLubyte*)by); - fy = fy + 1; - by = by + 1; - } - - } - -} int flush_agp(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd) { GLuint *pnAGPCurrentPhysStart; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h 2004-06-16 11:18:38.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_ioctl.h 2004-12-15 02:50:59.000000000 +0100 @@ -47,8 +47,6 @@ void viaFillStencilDepthBuffer(viaContextPtr vmesa, GLuint pixel); void viaDoSwapBuffers(viaContextPtr vmesa); void viaDoSwapBuffersSaam(viaContextPtr vmesa); -void viaDoSwapBufferSoft(viaContextPtr vmesa); -void viaDoSwapBufferSoftFront(viaContextPtr vmesa); void viaDoSwapPBuffers(viaContextPtr vmesa); int flush_agp(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c 2004-06-16 11:18:39.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_state.c 2004-12-15 02:50:59.000000000 +0100 @@ -46,6 +46,7 @@ #include "tnl/t_pipeline.h" + static GLuint ROP[16] = { HC_HROP_BLACK, /* GL_CLEAR 0 */ HC_HROP_DPa, /* GL_AND s & d */ @@ -506,13 +507,52 @@ } } +/** + * Convert S and T texture coordinate wrap modes to hardware bits. + */ +static uint32_t +get_wrap_mode( GLenum sWrap, GLenum tWrap ) +{ + uint32_t v = 0; + + + switch( sWrap ) { + case GL_REPEAT: + v |= HC_HTXnMPMD_Srepeat; + break; + case GL_CLAMP: + case GL_CLAMP_TO_EDGE: + v |= HC_HTXnMPMD_Sclamp; + break; + case GL_MIRRORED_REPEAT: + v |= HC_HTXnMPMD_Smirror; + break; + } + + switch( tWrap ) { + case GL_REPEAT: + v |= HC_HTXnMPMD_Trepeat; + break; + case GL_CLAMP: + case GL_CLAMP_TO_EDGE: + v |= HC_HTXnMPMD_Tclamp; + break; + case GL_MIRRORED_REPEAT: + v |= HC_HTXnMPMD_Tmirror; + break; + } + + return v; +} + + void viaChooseTextureState(GLcontext *ctx) { viaContextPtr vmesa = VIA_CONTEXT(ctx); struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0]; struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1]; /*=* John Sheng [2003.7.18] texture combine *=*/ - GLboolean AlphaCombine[3]; + #ifdef DEBUG if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__); #endif @@ -524,10 +564,26 @@ } #endif +#ifdef DEBUG + if (VIA_DEBUG) { + struct gl_texture_object *texObj0 = texUnit0->_Current; + struct gl_texture_object *texObj1 = texUnit1->_Current; + + fprintf(stderr, "env mode: 0x%04x / 0x%04x\n", texUnit0->EnvMode, texUnit1->EnvMode); + + if ( (texObj0 != NULL) && (texObj0->Image[0][0] != NULL) ) + fprintf(stderr, "format 0: 0x%04x\n", texObj0->Image[0][0]->Format); + + if ( (texObj1 != NULL) && (texObj1->Image[0][0] != NULL) ) + fprintf(stderr, "format 1: 0x%04x\n", texObj1->Image[0][0]->Format); + } +#endif + + if (texUnit0->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit0->_Current; struct gl_texture_image *texImage = texObj->Image[0][0]; - GLint r, g, b, a; + #ifdef DEBUG if (VIA_DEBUG) fprintf(stderr, "texUnit0->_ReallyEnabled\n"); #endif @@ -580,2502 +636,15 @@ HC_HTXnFLTe_Nearest; } - if (texObj->WrapS == GL_REPEAT) - vmesa->regHTXnMPMD_0 = HC_HTXnMPMD_Srepeat; - else - vmesa->regHTXnMPMD_0 = HC_HTXnMPMD_Sclamp; + vmesa->regHTXnMPMD_0 &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); + vmesa->regHTXnMPMD_0 |= get_wrap_mode( texObj->WrapS, + texObj->WrapT ); - if (GL_TRUE) { - if (texObj->WrapT == GL_REPEAT) - vmesa->regHTXnMPMD_0 |= HC_HTXnMPMD_Trepeat; - else - vmesa->regHTXnMPMD_0 |= HC_HTXnMPMD_Tclamp; - } #ifdef DEBUG if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode %x\n",texUnit0->EnvMode); #endif - switch (texUnit0->EnvMode) { - case GL_MODULATE: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = At*Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Adif | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Atex | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt*Cf, A = Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt*Cf, A = At*Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - /* C = It*Cf, A = It*Af - * RGB part. - * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_RGB: - /* C = Ct*Cf, A = Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_MODULATE: GL_RGB\n"); -#endif - break; - case GL_RGBA: - /* C = Ct*Cf, A = At*Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias - | HC_HTXnTBLAshift_No; - - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_MODULATE: GL_RGBA\n"); -#endif - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = At*Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Adif | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt*Cf, A = Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt*Cf, A = At*Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - /* C = It*Cf, A = It*Af - * RGB part. - * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_RGB: - /* C = Ct*Cf, A = Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - /* C = Ct*Cf, A = At*Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Dif | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - } - break; - } - break; - case GL_DECAL: - switch (texImage->Format) { - case GL_ALPHA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_INTENSITY: - /* Undefined. - */ - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_DECAL: GL_RGB\n"); -#endif - break; - case GL_RGBA: - /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf - * RGB part. - * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Atex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_Tex | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_DECAL: GL_RGBA\n"); -#endif - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_INTENSITY: - /* Undefined. - */ - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGB\n"); -#endif - break; - case GL_RGBA: - /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf - * RGB part. - * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Atex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_Tex | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGBA\n"); -#endif - break; - } - break; - } - break; - case GL_BLEND: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac - * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af - * RGB part. - * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = (a << 8); - break; - case GL_RGB: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_BLEND: GL_RGB\n"); -#endif - break; - case GL_RGBA: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_BLEND: GL_RGBA\n"); -#endif - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac - * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af - * RGB part. - * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = (a << 8); - break; - case GL_RGB: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - } - break; - } - break; - case GL_REPLACE: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_INTENSITY: - /* C = It, A = It - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_REPLACE: GL_RGB\n"); -#endif - break; - case GL_RGBA: - /* C = Ct, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; -#ifdef DEBUG - if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode: GL_REPLACE: GL_RGBA\n"); -#endif - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_INTENSITY: - /* C = It, A = It - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - /* C = Ct, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - } - break; - } - break; - /*=* John Sheng [2003.7.18] texture combine *=*/ - case GL_COMBINE: - switch (texUnit0->Combine.ModeRGB) { - case GL_REPLACE: - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Tex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Atex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Atex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC; - - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - break; - } - break; - case GL_PRIMARY_COLOR : - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - case GL_PREVIOUS : - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - - case GL_MODULATE: - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit0->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[1]=1; - break; - } - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCa_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - } - switch (texUnit0->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_ADD: - case GL_SUBTRACT : - if (texUnit0->Combine.ModeRGB==GL_ADD) { - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - } - else { - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - } - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 ); - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit0->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_InvTOPC; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_InvTOPC; - AlphaCombine[1]=1; - break; - } - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit0->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCc_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCc_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Adif; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_ADD_SIGNED : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC| - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 ); - vmesa->regHTXnTBLRCc_0 = ( 128<<16 | 128<<8 |128 ); - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit0->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=1; - break; - } - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit0->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCbias_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCbias_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Dif; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Adif; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_INTERPOLATE : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit0->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_InvTOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_InvTOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=1; - break; - } - switch (texUnit0->Combine.OperandRGB[2]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC; - AlphaCombine[2]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_InvTOPC; - AlphaCombine[2]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC; - AlphaCombine[2]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_InvTOPC; - AlphaCombine[2]=1; - break; - } - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit0->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Atex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_HTXnTBLRC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCc_0 = (r << 16) | (g << 8) | b; - vmesa->regHTXnTBLRCbias_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCc_0 = (a << 16) | (a << 8) | a; - vmesa->regHTXnTBLRCbias_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Adif; - } - break; - } - switch (texUnit0->Combine.SourceRGB[2]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCa_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - } - switch (texUnit0->Combine.ModeA) { - case GL_REPLACE: - switch (texUnit0->Combine.SourceA[0]) { - case GL_TEXTURE: - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_Atex; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = a; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = a; - break; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_Adif; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - } - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_MODULATE: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0= 0x0; - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_InvTOPA; - break; - } - switch (texUnit0->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit0->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a<<16; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif; - break; - } - switch (texUnit0->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a<<8; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_ADD: - case GL_SUBTRACT : - if(texUnit0->Combine.ModeA==GL_ADD) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | HC_HTXnTBLAbias_HTXnTBLRAbias; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub | HC_HTXnTBLAbias_HTXnTBLRAbias; - } - vmesa->regHTXnTBLRFog_0 = 0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = 0x0 | ( 255<<16 ); - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit0->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_InvTOPA; - break; - } - switch (texUnit0->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit0->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif; - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_ADD_SIGNED : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA| - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = ( 255<<16 | 0<<8 |128 ); - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit0->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv; - break; - } - switch (texUnit0->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit0->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif; - break; - } - switch ((GLint)(texUnit0->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_INTERPOLATE : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - switch (texUnit0->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit0->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_InvTOPA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv; - break; - } - switch (texUnit0->Combine.OperandA[2]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_InvTOPA; - break; - } - switch (texUnit0->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit0->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif; - break; - } - switch (texUnit0->Combine.SourceA[2]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 16); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif; - break; - } - switch (texUnit0->Combine.ScaleShiftA) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_DOT3_RGB : - case GL_DOT3_RGBA : - break; - } - break; - /*=* John Sheng [2003.7.18] texture add *=*/ - case GL_ADD: - switch(texImage->Format) { - case GL_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Adif | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Atex | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Atex | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - /*=* John Sheng [2003.7.18] texenv *=*/ - /*vmesa->regHTXnTBLRAa_0 = 0x0;*/ - vmesa->regHTXnTBLRAa_0 = (255<<16) | (255<<8) | 255;; - vmesa->regHTXnTBLRFog_0 = 0x0 | 255<<16; - break; - case GL_RGB: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_COLOR_INDEX: - switch(texObj->Palette.Format) { - case GL_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Adif | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Atex | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Atex | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0 | 255<<16; - break; - case GL_RGB: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - } - break; - } - break; - /*=* John Sheng [2003.7.18] texture dot3 *=*/ - case GL_DOT3_RGB : - case GL_DOT3_RGBA : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLDOT4 | HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_2 | HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = 0x0; - switch (texUnit0->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - break; - } - switch (texUnit0->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - break; - } - switch (texUnit0->Combine.SourceRGB[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - break; - } - switch (texUnit0->Combine.SourceRGB[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - break; - } - break; - default: - break; - } + + viaTexCombineState( vmesa, texUnit0->_CurrentCombine, 0 ); } else { /* Should turn Cs off if actually no Cs */ @@ -3084,7 +653,6 @@ if (texUnit1->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit1->_Current; struct gl_texture_image *texImage = texObj->Image[0][0]; - GLint r, g, b, a; if (texImage->Border) { FALLBACK(vmesa, VIA_FALLBACK_TEXTURE, GL_TRUE); @@ -3135,2539 +703,28 @@ break; } - if (texObj->WrapS == GL_REPEAT) - vmesa->regHTXnMPMD_1 = HC_HTXnMPMD_Srepeat; - else - vmesa->regHTXnMPMD_1 = HC_HTXnMPMD_Sclamp; - - if (GL_TRUE) { - if (texObj->WrapT == GL_REPEAT) - vmesa->regHTXnMPMD_1 |= HC_HTXnMPMD_Trepeat; - else - vmesa->regHTXnMPMD_1 |= HC_HTXnMPMD_Tclamp; - } - - switch (texUnit1->EnvMode) { - case GL_MODULATE: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = At*Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Acur | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt*Cf, A = Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt*Cf, A = At*Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_INTENSITY: - /* C = It*Cf, A = It*Af - * RGB part. - * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_RGB: - /* C = Ct*Cf, A = Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = Ct*Cf, A = At*Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias - | HC_HTXnTBLAshift_No; - - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = At*Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Acur | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt*Cf, A = Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt*Cf, A = At*Af - * RGB part. - * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_INTENSITY: - /* C = It*Cf, A = It*Af - * RGB part. - * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_RGB: - /* C = Ct*Cf, A = Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = Ct*Cf, A = At*Af - * RGB part. - * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Cur | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - } - break; - } - break; - case GL_DECAL: - switch (texImage->Format) { - case GL_ALPHA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_INTENSITY: - /* Undefined. - */ - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf - * RGB part. - * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Atex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_Tex | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_INTENSITY: - /* Undefined. - */ - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf - * RGB part. - * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Atex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_Tex | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - } - break; - } - break; - case GL_BLEND: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_INTENSITY: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac - * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af - * RGB part. - * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Acur; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Sub | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = (a << 8); - break; - case GL_RGB: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf - * RGB part. - * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - case GL_INTENSITY: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac - * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af - * RGB part. - * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Acur; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Sub | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = (a << 8); - break; - case GL_RGB: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf - * RGB part. - * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_Tex | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_HTXnTBLRC | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Cur; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_1 = (r << 16) | (g << 8) | b; - /* Alpha part. - * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Acur | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - vmesa->regHTXnTBLRFog_1 = 0x0; - break; - } - break; - } - break; - case GL_REPLACE: - switch (texImage->Format) { - case GL_ALPHA: - /* C = Cf, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_INTENSITY: - /* C = It, A = It - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = Ct, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_COLOR_INDEX: - switch (texObj->Palette.Format) { - case GL_ALPHA: - /* C = Cf, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Cur | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE: - /* C = Lt, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - /* C = Lt, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_INTENSITY: - /* C = It, A = It - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGB: - /* C = Ct, A = Af - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Acur | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - case GL_RGBA: - /* C = Ct, A = At - * RGB part. - * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No. - */ - vmesa->regHTXnTBLCsat_1 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_1 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; - /* Alpha part. - * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No. - */ - vmesa->regHTXnTBLAsat_1 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_1 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_1 = 0x0; - break; - } - break; - } - break; - /*=* John Sheng [2003.7.18] texture combine *=*/ - case GL_COMBINE: - switch (texUnit1->Combine.ModeRGB) { - case GL_REPLACE: - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Tex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Atex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Atex; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC; - - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - break; - } - break; - case GL_PRIMARY_COLOR : - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - case GL_PREVIOUS : - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | - HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - break; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - - case GL_MODULATE: - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[1]=1; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCa_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_ADD: - case GL_SUBTRACT : - if (texUnit1->Combine.ModeRGB==GL_ADD) { - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - } - else { - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0; - } - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 ); - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_InvTOPC; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_InvTOPC; - AlphaCombine[1]=1; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCc_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCc_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Adif; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_ADD_SIGNED : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC| - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 ); - vmesa->regHTXnTBLRCc_0 = ( 128<<16 | 128<<8 |128 ); - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=1; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_HTXnTBLRC; - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLRCbias_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCbias_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[1]==0) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Dif; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Adif; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - case GL_INTERPOLATE : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC; - AlphaCombine[0]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_InvTOPC; - AlphaCombine[0]=1; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_InvTOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias; - AlphaCombine[1]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_InvTOPC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_InvCbias; - AlphaCombine[1]=1; - break; - } - switch (texUnit1->Combine.OperandRGB[2]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC; - AlphaCombine[2]=0; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_InvTOPC; - AlphaCombine[2]=0; - break; - case GL_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC; - AlphaCombine[2]=1; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_InvTOPC; - AlphaCombine[2]=1; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Adif; - } - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Atex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_HTXnTBLRC; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCc_0 = (r << 16) | (g << 8) | b; - vmesa->regHTXnTBLRCbias_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCc_0 = (a << 16) | (a << 8) | a; - vmesa->regHTXnTBLRCbias_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Adif; - } - break; - } - switch (texUnit1->Combine.SourceRGB[2]) { - case GL_TEXTURE: - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Atex; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - } - else { - vmesa->regHTXnTBLRCa_0 = (a << 16) | (a << 8) | a; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - if (AlphaCombine[0]==0) { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - } - else { - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Adif; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2; - break; - } - break; - - case GL_DOT3_RGB : - case GL_DOT3_RGBA : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLDOT4 | HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_2 | HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = 0x0; - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - break; - } - break; - - } - switch (texUnit1->Combine.ModeA) { - case GL_REPLACE: - switch (texUnit1->Combine.SourceA[0]) { - case GL_TEXTURE: - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Atex; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_Atex; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - } - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = a; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = a; - break; - } - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Inv | HC_HTXnTBLAbias_Adif; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - } - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_MODULATE: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0= 0x0; - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_InvTOPA; - break; - } - switch (texUnit1->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit1->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a<<16; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif; - break; - } - switch (texUnit1->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a<<8; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_ADD: - case GL_SUBTRACT : - if(texUnit1->Combine.ModeA==GL_ADD) { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | HC_HTXnTBLAbias_HTXnTBLRAbias; - } - else { - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub | HC_HTXnTBLAbias_HTXnTBLRAbias; - } - vmesa->regHTXnTBLRFog_0 = 0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = 0x0 | ( 255<<16 ); - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit1->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_InvTOPA; - break; - } - switch (texUnit1->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit1->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif; - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_ADD_SIGNED : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA| - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = ( 255<<16 | 0<<8 |128 ); - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit1->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv; - break; - } - switch (texUnit1->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit1->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif; - break; - } - switch ((GLint)(texUnit1->Combine.ScaleShiftA)) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_INTERPOLATE : - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - switch (texUnit1->Combine.OperandA[0]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_InvTOPA; - break; - } - switch (texUnit1->Combine.OperandA[1]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_InvTOPA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv; - break; - } - switch (texUnit1->Combine.OperandA[2]) { - case GL_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_TOPA; - break; - case GL_ONE_MINUS_SRC_ALPHA: - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_InvTOPA; - break; - } - switch (texUnit1->Combine.SourceA[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 8); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif; - break; - } - switch (texUnit1->Combine.SourceA[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= a; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_HTXnTBLRAbias; - vmesa->regHTXnTBLRFog_0 |= a; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif; - break; - } - switch (texUnit1->Combine.SourceA[2]) { - case GL_TEXTURE: - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a); - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 |= (a << 16); - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif; - break; - } - switch (texUnit1->Combine.ScaleShiftA) { - case 1: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No; - break; - case 2: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1; - break; - case 4: - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2; - break; - } - break; - case GL_DOT3_RGB : - case GL_DOT3_RGBA : - break; - } - break; + vmesa->regHTXnMPMD_1 &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); + vmesa->regHTXnMPMD_1 |= get_wrap_mode( texObj->WrapS, + texObj->WrapT ); - /*=* John Sheng [2003.7.18] texture add *=*/ - case GL_ADD: - switch(texImage->Format) { - case GL_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Adif | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Atex | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Atex | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - /*=* John Sheng [2003.7.18] texenv *=*/ - /*vmesa->regHTXnTBLRAa_0 = 0x0;*/ - vmesa->regHTXnTBLRAa_0 = (255<<16) | (255<<8) | 255;; - vmesa->regHTXnTBLRFog_0 = 0x0 | 255<<16; - break; - case GL_RGB: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_COLOR_INDEX: - switch(texObj->Palette.Format) { - case GL_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_0 | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Adif | HC_HTXnTBLAb_TOPA | - HC_HTXnTBLAb_Atex | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_LUMINANCE: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_LUMINANCE_ALPHA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - case GL_INTENSITY: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Atex | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_Adif; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0 | 255<<16; - break; - case GL_RGB: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_Adif | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - break; - case GL_RGBA: - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC | HC_HTXnTBLCb_TOPC | - HC_HTXnTBLCb_Tex | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_Dif; - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLRCa_0 = (255<<16) | (255<<8) | 255; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_Atex | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_Adif | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLRAa_0 = 0x0; - vmesa->regHTXnTBLRFog_0 = 0x0; - break; - } - break; - } - break; - /*=* John Sheng [2003.7.18] texture dot3 *=*/ - case GL_DOT3_RGB : - case GL_DOT3_RGBA : - vmesa->regHTXnTBLCop_0 = HC_HTXnTBLDOT4 | HC_HTXnTBLCop_Add | - HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0 | - HC_HTXnTBLCshift_2 | HC_HTXnTBLAop_Add | - HC_HTXnTBLAbias_HTXnTBLRAbias | HC_HTXnTBLAshift_No; - vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; - vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | - HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0; - vmesa->regHTXnTBLRFog_0 = 0x0; - vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | - HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA | - HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA | - HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA; - vmesa->regHTXnTBLRAa_0 = 0x0; - switch (texUnit1->Combine.OperandRGB[0]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC; - break; - } - switch (texUnit1->Combine.OperandRGB[1]) { - case GL_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC; - break; - case GL_ONE_MINUS_SRC_COLOR: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC; - break; - } - switch (texUnit1->Combine.SourceRGB[0]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_HTXnTBLRC; - vmesa->regHTXnTBLRCa_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif; - break; - } - switch (texUnit1->Combine.SourceRGB[1]) { - case GL_TEXTURE: - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex; - break; - case GL_CONSTANT : - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[0], r); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g); - CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b); - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_HTXnTBLRC; - vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b; - break; - case GL_PRIMARY_COLOR : - case GL_PREVIOUS : - vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Dif; - break; - } - break; - default: - break; - } + viaTexCombineState( vmesa, texUnit1->_CurrentCombine, 1 ); } vmesa->dirty |= VIA_UPLOAD_TEXTURE; + +#ifdef DEBUG + if (VIA_DEBUG) { + fprintf( stderr, "Csat_0 / Cop_0 = 0x%08x / 0x%08x\n", + vmesa->regHTXnTBLCsat_0, vmesa->regHTXnTBLCop_0 ); + fprintf( stderr, "Asat_0 = 0x%08x\n", + vmesa->regHTXnTBLAsat_0 ); + fprintf( stderr, "RCb_0 / RAa_0 = 0x%08x / 0x%08x\n", + vmesa->regHTXnTBLRCb_0, vmesa->regHTXnTBLRAa_0 ); + fprintf( stderr, "RCa_0 / RCc_0 = 0x%08x / 0x%08x\n", + vmesa->regHTXnTBLRCa_0, vmesa->regHTXnTBLRCc_0 ); + fprintf( stderr, "RCbias_0 = 0x%08x\n", + vmesa->regHTXnTBLRCbias_0 ); + } +#endif } else { if (ctx->Fog.Enabled) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c x11r682/xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c --- xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/drivers/dri/unichrome/via_texcombine.c 2004-12-15 02:51:00.000000000 +0100 @@ -0,0 +1,386 @@ +/* + * (C) Copyright IBM Corporation 2004 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file via_texcombine.c + * Calculate texture combine hardware state. + * + * \author Ian Romanick + */ + +#include + +#include "glheader.h" +#include "context.h" +#include "macros.h" +#include "colormac.h" +#include "enums.h" +#include "dd.h" + +#include "mm.h" +#include "via_context.h" +#include "via_state.h" +#include "via_tex.h" +#include "via_vb.h" +#include "via_tris.h" +#include "via_ioctl.h" + +#include "swrast/swrast.h" +#include "array_cache/acache.h" +#include "tnl/tnl.h" +#include "swrast_setup/swrast_setup.h" + +#include "tnl/t_pipeline.h" + +#define VIA_USE_ALPHA (HC_XTC_Adif - HC_XTC_Dif) + +#define INPUT_A_SHIFT 14 +#define INPUT_B_SHIFT 7 +#define INPUT_C_SHIFT 0 +#define INPUT_BiasC_SHIFT 14 +#define INPUT_BiasA_SHIFT 3 + +#define CONST_ONE (HC_XTC_0 | HC_XTC_InvTOPC) + +static const unsigned color_operand_modifier[4] = { + 0, + HC_XTC_InvTOPC, + VIA_USE_ALPHA, + VIA_USE_ALPHA | HC_XTC_InvTOPC, +}; + +static const unsigned alpha_operand_modifier[2] = { + 0, HC_XTA_InvTOPA +}; + +static const unsigned c_shift_table[3] = { + HC_HTXnTBLCshift_No, HC_HTXnTBLCshift_1, HC_HTXnTBLCshift_2 +}; + +static const unsigned a_shift_table[3] = { + HC_HTXnTBLAshift_No, HC_HTXnTBLAshift_1, HC_HTXnTBLAshift_2 +}; + + +/** + * Calculate the hardware state for the specified texture combine mode + * + * \bug + * For the alpha combine, \c GL_CONSTANT is still probably wrong. + * + * \bug + * All forms of DOT3 bumpmapping are completely untested, and are most + * likely wrong. + * + * \bug + * This code still fails progs/demos/texenv for all modes with \c GL_ALPHA + * textures. This was also the case with the code that Via supplied. It + * also fails for \c GL_REPLACE with \c GL_RGBA textures. Everything else + * that texenv tests looks good. + */ +void +viaTexCombineState( viaContextPtr vmesa, + const struct gl_tex_env_combine_state * combine, + unsigned unit ) +{ + unsigned color_arg[3]; + unsigned alpha_arg[3]; + unsigned color = 0; + unsigned alpha = 0; + unsigned bias = 0; + unsigned op = 0; + unsigned a_shift = combine->ScaleShiftA; + unsigned c_shift = combine->ScaleShiftRGB; + unsigned i; + unsigned constant_color[3]; + unsigned ordered_constant_color[4]; + unsigned constant_alpha = 0; + unsigned bias_alpha = 0; + const struct gl_texture_unit const * texUnit = & vmesa->glCtx->Texture.Unit[unit]; + unsigned env_color[4]; + + + CLAMPED_FLOAT_TO_UBYTE(env_color[0], texUnit->EnvColor[0]); + CLAMPED_FLOAT_TO_UBYTE(env_color[1], texUnit->EnvColor[1]); + CLAMPED_FLOAT_TO_UBYTE(env_color[2], texUnit->EnvColor[2]); + CLAMPED_FLOAT_TO_UBYTE(env_color[3], texUnit->EnvColor[3]); + + (void) memset( constant_color, 0, sizeof( constant_color ) ); + (void) memset( ordered_constant_color, 0, sizeof( ordered_constant_color ) ); + + for ( i = 0 ; i < combine->_NumArgsRGB ; i++ ) { + const GLint op = combine->OperandRGB[i] - GL_SRC_COLOR; + + switch ( combine->SourceRGB[i] ) { + case GL_TEXTURE: + color_arg[i] = HC_XTC_Tex; + color_arg[i] += color_operand_modifier[op]; + break; + case GL_CONSTANT: + color_arg[i] = HC_XTC_HTXnTBLRC; + + switch( op ) { + case 0: + constant_color[i] = ((env_color[0] << 16) + | (env_color[1] << 8) + | env_color[2]); + break; + case 1: + constant_color[i] = ~((env_color[0] << 16) + | (env_color[1] << 8) + | env_color[2]) & 0x00ffffff; + break; + case 2: + constant_color[i] = ((env_color[3] << 16) + | (env_color[3] << 8) + | env_color[3]); + break; + case 3: + constant_color[i] = ~((env_color[3] << 16) + | (env_color[3] << 8) + | env_color[3]) & 0x00ffffff; + break; + } + break; + case GL_PRIMARY_COLOR: + color_arg[i] = HC_XTC_Dif; + color_arg[i] += color_operand_modifier[op]; + break; + case GL_PREVIOUS: + color_arg[i] = (unit == 0) ? HC_XTC_Dif : HC_XTC_Cur; + color_arg[i] += color_operand_modifier[op]; + break; + } + } + + for ( i = 0 ; i < combine->_NumArgsA ; i++ ) { + const GLint op = combine->OperandA[i] - GL_SRC_ALPHA; + + switch ( combine->SourceA[i] ) { + case GL_TEXTURE: + alpha_arg[i] = HC_XTA_Atex; + alpha_arg[i] += alpha_operand_modifier[op]; + break; + case GL_CONSTANT: + alpha_arg[i] = HC_XTA_HTXnTBLRA; + constant_alpha = (op == 0) + ? env_color[3] : ~(env_color[3]) & 0x000000ff; + break; + case GL_PRIMARY_COLOR: + alpha_arg[i] = HC_XTA_Adif; + alpha_arg[i] += alpha_operand_modifier[op]; + break; + case GL_PREVIOUS: + alpha_arg[i] = (unit == 0) ? HC_XTA_Adif : HC_XTA_Acur; + alpha_arg[i] += alpha_operand_modifier[op]; + break; + } + } + + + /* On the Unichrome, all combine operations take on some form of: + * + * A * (B op Bias) + C + * + * 'op' can be selected as add, subtract, min, max, or mask. The min, max + * and mask modes are currently unused. With the exception of DOT3, all + * standard GL_COMBINE modes can be implemented simply by selecting the + * correct inputs for A, B, C, and Bias and the correct operation for op. + */ + + color = HC_HTXnTBLCsat_MASK; + alpha = HC_HTXnTBLAsat_MASK; + + switch( combine->ModeRGB ) { + /* A = 0, B = 0, C = arg0, Bias = 0 + */ + case GL_REPLACE: + bias |= (color_arg[0] << INPUT_BiasC_SHIFT); + ordered_constant_color[3] = constant_color[0]; + break; + + /* A = arg[0], B = arg[1], C = 0, Bias = 0 + */ + case GL_MODULATE: + color |= (color_arg[0] << INPUT_A_SHIFT) + | (color_arg[1] << INPUT_B_SHIFT); + + ordered_constant_color[0] = constant_color[0]; + ordered_constant_color[1] = constant_color[1]; + break; + + /* A = 1.0, B = arg[0], C = 0, Bias = arg[1] + */ + case GL_ADD: + case GL_SUBTRACT: + if ( combine->ModeRGB == GL_SUBTRACT ) { + op |= HC_HTXnTBLCop_Sub; + } + + color |= (color_arg[0] << INPUT_B_SHIFT) + | (CONST_ONE << INPUT_A_SHIFT); + + bias |= (color_arg[1] << INPUT_BiasC_SHIFT); + ordered_constant_color[1] = constant_color[0]; + ordered_constant_color[3] = constant_color[1]; + break; + + /* A = 0, B = arg[0], C = arg[1], Bias = 0.5 + */ + case GL_ADD_SIGNED: + color |= (color_arg[0] << INPUT_B_SHIFT) + | (color_arg[1] << INPUT_C_SHIFT); + bias |= HC_HTXnTBLCbias_HTXnTBLRC; + op |= HC_HTXnTBLCop_Sub; + + ordered_constant_color[1] = constant_color[0]; + ordered_constant_color[2] = constant_color[1]; + ordered_constant_color[3] = 0x00808080; + break; + + /* A = arg[2], B = arg[0], C = arg[1], Bias = arg[1] + */ + case GL_INTERPOLATE: + op |= HC_HTXnTBLCop_Sub; + + color |= (color_arg[2] << INPUT_A_SHIFT) | + (color_arg[0] << INPUT_B_SHIFT) | + (color_arg[1] << INPUT_C_SHIFT); + bias |= (color_arg[1] << INPUT_BiasC_SHIFT); + + ordered_constant_color[0] = constant_color[2]; + ordered_constant_color[1] = constant_color[0]; + ordered_constant_color[2] = constant_color[1]; + ordered_constant_color[3] = constant_color[1]; + break; + + /* At this point this code is completely untested. It appears that the + * Unichrome has the same limitation as the Radeon R100. The only + * supported post-scale when doing DOT3 bumpmapping is 1x. + */ + case GL_DOT3_RGB_EXT: + case GL_DOT3_RGBA_EXT: + case GL_DOT3_RGB: + case GL_DOT3_RGBA: + c_shift = 2; + a_shift = 2; + color |= (color_arg[0] << INPUT_A_SHIFT) | + (color_arg[1] << INPUT_B_SHIFT); + op |= HC_HTXnTBLDOT4; + break; + } + + + /* The alpha blend stage has the annoying quirk of not having a + * hard-wired 0 input, like the color stage. As a result, we have + * to program the constant register with 0 and use that as our + * 0 input. + */ + + switch( combine->ModeA ) { + /* A = 0, B = 0, C = 0, Bias = arg0 + */ + case GL_REPLACE: + bias |= (alpha_arg[0] << INPUT_BiasA_SHIFT); + + alpha |= (HC_XTA_HTXnTBLRA << INPUT_A_SHIFT) | + (HC_XTA_HTXnTBLRA << INPUT_B_SHIFT) | + (HC_XTA_HTXnTBLRA << INPUT_C_SHIFT); + break; + + /* A = arg[0], B = arg[1], C = 0, Bias = 0 + */ + case GL_MODULATE: + alpha |= (alpha_arg[1] << INPUT_A_SHIFT) + | (alpha_arg[0] << INPUT_B_SHIFT) + | (HC_XTA_HTXnTBLRA << INPUT_C_SHIFT); + + bias |= (HC_XTA_HTXnTBLRA << INPUT_BiasA_SHIFT); + break; + + /* A = 0, B = arg[0], C = 0, Bias = arg[1] + */ + case GL_ADD: + case GL_SUBTRACT: + if ( combine->ModeA == GL_SUBTRACT ) { + op |= HC_HTXnTBLAop_Sub; + } + + alpha |= (HC_XTA_HTXnTBLRA << INPUT_A_SHIFT) | + (alpha_arg[0] << INPUT_B_SHIFT) | + (HC_XTA_HTXnTBLRA << INPUT_C_SHIFT); + bias |= (alpha_arg[1] << INPUT_BiasA_SHIFT); + break; + + /* A = 0, B = arg[0], C = arg[1], Bias = 0.5 + */ + case GL_ADD_SIGNED: + op |= HC_HTXnTBLAop_Sub; + + alpha |= (alpha_arg[0] << INPUT_B_SHIFT) + | (alpha_arg[1] << INPUT_C_SHIFT); + bias |= (HC_XTA_HTXnTBLRA << INPUT_BiasA_SHIFT); + + bias_alpha = 0x00000080; + break; + + /* A = arg[2], B = arg[0], C = arg[1], Bias = arg[1] + */ + case GL_INTERPOLATE: + op |= HC_HTXnTBLAop_Sub; + + alpha |= (alpha_arg[2] << INPUT_A_SHIFT) | + (alpha_arg[0] << INPUT_B_SHIFT) | + (alpha_arg[1] << INPUT_C_SHIFT); + bias |= (alpha_arg[1] << INPUT_BiasA_SHIFT); + break; + } + + + op |= c_shift_table[ c_shift ] | a_shift_table[ a_shift ]; + + + if ( unit == 0 ) { + vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog; + + vmesa->regHTXnTBLCsat_0 = color; + vmesa->regHTXnTBLAsat_0 = alpha; + vmesa->regHTXnTBLCop_0 = op | bias; + vmesa->regHTXnTBLRAa_0 = bias_alpha | (constant_alpha << 16); + + vmesa->regHTXnTBLRCa_0 = ordered_constant_color[0]; + vmesa->regHTXnTBLRCb_0 = ordered_constant_color[1]; + vmesa->regHTXnTBLRCc_0 = ordered_constant_color[2]; + vmesa->regHTXnTBLRCbias_0 = ordered_constant_color[3]; + } + else { + vmesa->regHTXnTBLMPfog_1 = HC_HTXnTBLMPfog_Fog; + + vmesa->regHTXnTBLCsat_1 = color; + vmesa->regHTXnTBLAsat_1 = alpha; + vmesa->regHTXnTBLCop_1 = op | bias; + vmesa->regHTXnTBLRAa_1 = bias_alpha | (constant_alpha << 16); + } +} + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/default/linear.c x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/default/linear.c --- xc/extras/Mesa/src/mesa/drivers/ggi/default/linear.c 2004-06-16 11:18:45.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/default/linear.c 2004-12-15 02:51:00.000000000 +0100 @@ -39,7 +39,7 @@ ((color[GCOMP]>>GS) << B) | \ ((color[BCOMP]>>BS))) -#define FLIP(coord) (LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y-(coord) - 1) +#define FLIP(coord) (LIBGGI_VIRTY(ggi_ctx->ggi_visual) - (coord) - 1) /**********************************************************************/ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_mode.c x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_mode.c --- xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_mode.c 2004-06-16 11:18:46.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_mode.c 2004-12-15 02:51:01.000000000 +0100 @@ -50,15 +50,13 @@ int GGIMesa_fbdev_getapi(ggi_visual *vis, int num, char *apiname, char *arguments) { - struct fbdev_priv_mesa *priv = GGIMESA_PRIVATE(vis); + struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis); - strcpy(arguments, ""); + arguments = '\0'; - switch(num) - { - case 0: - if (priv->oldpriv->have_accel) - { + switch(num) { + case 0: + if (priv->oldpriv->have_accel) { strcpy(apiname, priv->oldpriv->accel); return 0; } @@ -70,35 +68,33 @@ static int do_setmode(ggi_visual *vis) { - struct fbdev_priv_mesa *priv = GGIMESA_PRIVATE(vis); + struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis); int err, id; - char libname[256], libargs[256]; + char libname[GGI_API_MAXLEN], libargs[GGI_API_MAXLEN]; ggi_graphtype gt; _ggiZapMode(vis, ~GGI_DL_OPDISPLAY); priv->have_accel = 0; - for (id = 1; GGIMesa_fbdev_getapi(vis, id, libname, libargs) == 0; id++) - { - if (_ggiOpenDL(vis, libname, libargs, NULL) == 0) - { - fprintf(stderr, "display-fbdev-mesa: Error opening the " + + for (id = 1; GGIMesa_fbdev_getapi(vis, id, libname, libargs) == 0; id++) { + if (_ggiOpenDL(vis, libname, libargs, NULL) == 0) { + GGIMESADPRINT_LIBS(stderr, "display-fbdev-mesa: Error opening the " "%s (%s) library.\n", libname, libargs); return GGI_EFATAL; } - GGIMESADPRINT_CORE("Success in loading %s (%s)\n", libname, libargs); + GGIMESADPRINT_CORE("Success in loading %s (%s)\n", + libname, libargs); } if (priv->oldpriv->accel && _ggiOpenDL(vis, priv->accel, NULL, NULL) != 0) { priv->have_accel = 1; - } - else - { + } else { priv->have_accel = 0; } vis->accelactive = 0; - + ggiIndicateChange(vis, GGI_CHG_APILIST); GGIMESADPRINT_CORE("display-fbdev-mesa: do_setmode SUCCESS\n"); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_visual.c x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_visual.c --- xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_visual.c 2004-06-16 11:18:46.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/display/fbdev_visual.c 2004-12-15 02:51:01.000000000 +0100 @@ -38,7 +38,6 @@ #include #include -#define GGI_SYMNAME_PREFIX "MesaGGIdl_" #ifdef HAVE_SYS_VT_H #include @@ -68,69 +67,28 @@ #define NUM_ACCELS (sizeof(accel_strings)/sizeof(accel_info)) -/* FIXME: These should really be defined in the make system */ -#define CONF_FILE "/usr/local/etc/ggi/mesa/targets/fbdev.conf" -void *_configHandle; -char confstub[512] = CONF_FILE; -char *conffile = confstub; -static int changed(ggi_visual_t vis, int whatchanged) -{ - switch (whatchanged) - { - case GGI_CHG_APILIST: - { - char api[256]; - char args[256]; - int i; - const char *fname; - ggi_dlhandle *lib; - - for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++) - { - strcat(api, "-mesa"); - fname = ggMatchConfig(_configHandle, api, NULL); - if (fname == NULL) - { - /* No special implementation for this sublib */ - continue; - } - - lib = ggiExtensionLoadDL(vis, fname, args, NULL, GGI_SYMNAME_PREFIX); - } - } - break; - } - return 0; -} -int GGIdlinit(ggi_visual *vis, const char *args, void *argptr) +static int GGIopen(ggi_visual *vis, struct ggi_dlhandle *dlh, + const char *args, void *argptr, uint32 *dlret) { - struct fbdev_priv_mesa *priv; int err; + struct fbdev_priv_mesa *priv; ggifunc_getapi *oldgetapi; - GGIMESA_PRIVATE(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa)); - if (priv == NULL) { - fprintf(stderr, "Failed to allocate fbdev private data\n"); - return GGI_DL_ERROR; - } - + priv->oldpriv = LIBGGI_PRIVATE(vis); /* Hook back */ - - err = ggLoadConfig(conffile, &_configHandle); - if (err != GGI_OK) - { - GGIMESADPRINT_CORE("display-fbdev: Couldn't open %s\n", conffile); - return err; + + GGIMESA_PRIV(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa)); + if (priv == NULL) { + fprintf(stderr, "GGIMesa: Failed to allocate fbdev private data\n"); + return GGI_ENOMEM; } - LIBGGI_MESAEXT(vis)->update_state = NULL; - LIBGGI_MESAEXT(vis)->setup_driver = NULL; - oldgetapi = vis->opdisplay->getapi; vis->opdisplay->getapi = GGIMesa_fbdev_getapi; changed(vis, GGI_CHG_APILIST); + /* If the accel sublibs didn't sucessfuly hook a driver, * back up and keep looking */ if ((LIBGGI_MESAEXT(vis)->update_state == NULL) || @@ -139,12 +97,42 @@ vis->opdisplay->getapi = oldgetapi; } + *dlret = GGI_DL_EXTENSION; return 0; } -int GGIdlcleanup(ggi_visual *vis) + +static int GGIclose(ggi_visual *vis, struct ggi_dlhandle *dlh) { + struct fbdev_priv_mesa *priv = GGIMESA_PRIV(vis); + + if (priv) { + LIBGGI_PRIVATE(vis) = priv->oldpriv; + free(priv); + } + return 0; } + +int MesaGGIdl_fbdev_mesa(int func, void **funcptr) +{ + switch (func) { + case GGIFUNC_open: + *funcptr = GGIopen; + return 0; + case GGIFUNC_exit: + *funcptr = NULL; + return 0; + case GGIFUNC_close: + *funcptr = GGIclose; + return 0; + default: + *funcptr = NULL; + } + + return GGI_ENOTFOUND; +} + + #include diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/ggimesa.c x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/ggimesa.c --- xc/extras/Mesa/src/mesa/drivers/ggi/ggimesa.c 2004-06-16 11:18:45.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/ggimesa.c 2004-12-15 02:51:00.000000000 +0100 @@ -43,19 +43,56 @@ #include "texformat.h" #include "texstore.h" -ggi_extid ggiMesaID = -1; +/* We use LibGG to manage config files */ +#include + + +/* XXX: Those #defines should be provided via + * config.h + */ +#define GGIMESAPATHTAG "pAtHTAg" +#define GGIMESACONFDIR "pAtHTAg/usr/local/etc/ggi" +#define GGIMESATAGLEN 7 +#define GGIMESACONFFILE "ggimesa.conf" + + +/* Static variables + */ static int _ggimesaLibIsUp = 0; static void *_ggimesaConfigHandle; - -static char ggimesaconffile[] = GGIMESACONFFILE; +static char _ggimesaconfstub[512] = GGIMESACONFDIR; +static char *_ggimesaconfdir = _ggimesaconfstub+GGIMESATAGLEN; int _ggimesaDebugSync = 0; uint32 _ggimesaDebugState = 0; -static void gl_ggiUpdateState(GLcontext *ctx, GLuint new_state); -static int changed(ggi_visual_t vis, int whatchanged); +/* Extension ID. Defaulting to -1 should make segfault on abuse more likely... + */ +ggi_extid _ggiMesaID = -1; + + +#define SUBLIB_PREFIX "MesaGGIdl_" + + +/* + * Returns the directory where global config files are kept + */ + +const char *ggiMesaGetConfDir(void) +{ +#ifdef __WIN32__ + /* On Win32 we allow overriding of the compiled in path. */ + const char *envdir = getenv("GGI_CONFDIR"); + if (envdir) return envdir; +#endif + return _ggimesaconfdir; +} + + +/* Dummy function which returns -1 + We use this to reset the function pointers */ static int _ggi_error(void) { GGIMESADPRINT_CORE("_ggi_error() called\n"); @@ -63,6 +100,147 @@ return -1; } + +static int changed(ggi_visual_t vis, int whatchanged) +{ + GLcontext *ctx; + ctx = _mesa_get_current_context(); + + GGIMESADPRINT_CORE("changed() called\n"); + + switch (whatchanged) { + case GGI_CHG_APILIST: + { + char api[GGI_MAX_APILEN]; + char args[GGI_MAX_APILEN]; + int i; + const char *fname; + ggi_dlhandle *lib; + + GLvisual *gl_vis = &(LIBGGI_MESAEXT(vis)->mesa_visual.gl_visual); + GLframebuffer *gl_fb = &(LIBGGI_MESAEXT(vis)->mesa_buffer); + + /* Initialize the framebuffer to provide all necessary + buffers in software. The target libraries that are loaded + next are free to modify this according to their + capabilities. + */ + /* FIXME: if the target changes capabilities we'll leak + swrast's memory !!! Need to deallocate first */ + _mesa_initialize_framebuffer(gl_fb, gl_vis, + gl_vis->depthBits > 0, + gl_vis->stencilBits > 0, + gl_vis->accumRedBits > 0, + gl_vis->alphaBits > 0); + + for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++) { + strcat(api, "-mesa"); + GGIMESADPRINT_CORE("GGIMesa: looking for" + "a sublib named %s\n", api); + fname = ggMatchConfig(_ggimesaConfigHandle, api, NULL); + if (fname == NULL) { + /* No special implementation for this sublib */ + continue; + } + lib = ggiExtensionLoadDL(vis, fname, args, NULL, + SUBLIB_PREFIX); + } + + /* The targets have cleared everything they can do from + the framebuffer structure so we provide the rest in sw + */ + _swrast_alloc_buffers(gl_fb); + + break; + } + } + return 0; +} + + +int ggiMesaInit() +{ + int err; + char *str; + char *conffile; + + GGIMESADPRINT_CORE("ggiMesaInit() called\n"); + + _ggimesaLibIsUp++; + if (_ggimesaLibIsUp > 1) return 0; /* Initialize only at first call */ + + str = getenv("GGIMESA_DEBUGSYNC"); + if (str != NULL) { + _ggimesaDebugSync = 1; + } + + str = getenv("GGIMESA_DEBUG"); + if (str != NULL) { + _ggimesaDebugState = atoi(str); + GGIMESADPRINT_CORE("%s Debugging=%d\n", + _ggimesaDebugSync ? "sync" : "async", + _ggimesaDebugState); + } + + + conffile = malloc(strlen(ggiMesaGetConfDir()) + 1 + + strlen(GGIMESACONFFILE) +1); + if (conffile == NULL) { + fprintf(stderr, "GGIMesa: unable to allocate memory for config filename.\n"); + return GGI_ENOMEM; + } + sprintf(conffile, "%s%c%s", + ggiMesaGetConfDir(), '/', GGIMESACONFFILE); + err = ggLoadConfig(conffile, &_ggimesaConfigHandle); + if (err != GGI_OK) { + fprintf(stderr, "GGIMesa: Couldn't open %s\n", + conffile); + free(conffile); + _ggimesaLibIsUp--; + return err; + } + free(conffile); + + _ggiMesaID = ggiExtensionRegister("GGIMesa", + sizeof(struct ggi_mesa_ext), changed); + if (_ggiMesaID < 0) { + fprintf(stderr, "GGIMesa: failed to register as extension\n"); + _ggimesaLibIsUp--; + ggFreeConfig(_ggimesaConfigHandle); + return _ggiMesaID; + } + + return 0; +} + +int ggiMesaExit(void) +{ + int rc; + + GGIMESADPRINT_CORE("ggiMesaExit() called\n"); + + if (!_ggimesaLibIsUp) return -1; + + if (_ggimesaLibIsUp > 1) { + /* Exit only at last call */ + _ggimesaLibIsUp--; + return 0; + } + + rc = ggiExtensionUnregister(_ggiMesaID); + ggFreeConfig(_ggimesaConfigHandle); + + _ggimesaLibIsUp = 0; + + return rc; +} + + + + +static void gl_ggiUpdateState(GLcontext *ctx, GLuint new_state); + + static void gl_ggiGetSize(GLframebuffer *fb, GLuint *width, GLuint *height) { /* FIXME: this is a hack to work around the new interface */ @@ -73,8 +251,8 @@ GGIMESADPRINT_CORE("gl_ggiGetSize() called\n"); - *width = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.x; - *height = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y; + *width = LIBGGI_VIRTX(ggi_ctx->ggi_visual); + *height = LIBGGI_VIRTY(ggi_ctx->ggi_visual); printf("returning %d, %d\n", *width, *height); } @@ -91,9 +269,9 @@ static void gl_ggiSetClearIndex(GLcontext *ctx, GLuint ci) { ggi_mesa_context_t ggi_ctx = (ggi_mesa_context_t)ctx->DriverCtx; - + GGIMESADPRINT_CORE("gl_ggiSetClearIndex() called\n"); - + ggiSetGCForeground(ggi_ctx->ggi_visual, ci); ggi_ctx->clearcolor = (ggi_pixel)ci; } @@ -126,19 +304,15 @@ GGIMESADPRINT_CORE("gl_ggiClear() called\n"); - if (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) - { + if (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) { ggiSetGCForeground(ggi_ctx->ggi_visual, ggi_ctx->clearcolor); - if (all) - { + if (all) { int w, h; - w = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.x; - h = LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y; + w = LIBGGI_VIRTX(ggi_ctx->ggi_visual); + h = LIBGGI_VIRTX(ggi_ctx->ggi_visual); ggiDrawBox(ggi_ctx->ggi_visual, 0, 0, w, h); - } - else - { + } else { ggiDrawBox(ggi_ctx->ggi_visual, x, y, //FLIP(y), width, height); } @@ -156,7 +330,7 @@ static GLboolean gl_ggiSetBuffer(GLcontext *ctx, GLframebuffer *buffer, GLuint bufferBit) { ggi_mesa_context_t ggi_ctx = (ggi_mesa_context_t)ctx->DriverCtx; - + printf("set read %d\n", bufferBit); GGIMESADPRINT_CORE("gl_ggiSetBuffer() called\n"); @@ -184,11 +358,12 @@ static const GLubyte * gl_ggiGetString(GLcontext *ctx, GLenum name) { GGIMESADPRINT_CORE("gl_ggiGetString() called\n"); - - if (name == GL_RENDERER) - return (GLubyte *) "Mesa GGI"; - else + + if (name == GL_RENDERER) { + return (GLubyte *) "Mesa GGI"; + } else { return NULL; + } } static void gl_ggiFlush(GLcontext *ctx) @@ -219,7 +394,7 @@ static void gl_ggiSetupPointers(GLcontext *ctx) { TNLcontext *tnl; - + GGIMESADPRINT_CORE("gl_ggiSetupPointers() called\n"); /* General information */ @@ -293,13 +468,13 @@ *g = 0; *b = 0; - for(i = 0; i < sizeof(ggi_pixel)*8; ++i){ + for(i = 0; i < sizeof(ggi_pixel)*8; ++i) { int mask = 1 << i; - if(LIBGGI_PIXFMT(vis)->red_mask & mask) + if (LIBGGI_PIXFMT(vis)->red_mask & mask) ++(*r); - if(LIBGGI_PIXFMT(vis)->green_mask & mask) + if (LIBGGI_PIXFMT(vis)->green_mask & mask) ++(*g); - if(LIBGGI_PIXFMT(vis)->blue_mask & mask) + if (LIBGGI_PIXFMT(vis)->blue_mask & mask) ++(*b); } @@ -310,84 +485,14 @@ printf("rgb (%d, %d, %d) db %d, rgb %d ci %d\n",*r,*g,*b,*db,*rgb,*ci); } -int ggiMesaInit() -{ - int err; - char *str; - - GGIMESADPRINT_CORE("ggiMesaInit() called\n"); - - str = getenv("GGIMESA_DEBUG"); - if (str != NULL) { - _ggimesaDebugState = atoi(str); - GGIMESADPRINT_CORE("Debugging=%d\n", _ggimesaDebugState); - } - - str = getenv("GGIMESA_DEBUGSYNC"); - if (str != NULL) { - _ggimesaDebugSync = 1; - } - - GGIMESADPRINT_CORE("ggiMesaInit()\n"); - - _ggimesaLibIsUp++; - if (_ggimesaLibIsUp > 1) - return 0; /* Initialize only at first call */ - - err = ggLoadConfig(ggimesaconffile, &_ggimesaConfigHandle); - if (err != GGI_OK) - { - GGIMESADPRINT_CORE("GGIMesa: Couldn't open %s\n", - ggimesaconffile); - _ggimesaLibIsUp--; - return err; - } - - ggiMesaID = ggiExtensionRegister("GGIMesa", - sizeof(struct ggi_mesa_ext), changed); - - if (ggiMesaID < 0) - { - GGIMESADPRINT_CORE("GGIMesa: failed to register as extension\n"); - _ggimesaLibIsUp--; - ggFreeConfig(_ggimesaConfigHandle); - return ggiMesaID; - } - - return 0; -} - -int ggiMesaExit(void) -{ - int rc; - - GGIMESADPRINT_CORE("ggiMesaExit() called\n"); - - if (!_ggimesaLibIsUp) - return -1; - - if (_ggimesaLibIsUp > 1) - { - /* Exit only at last call */ - _ggimesaLibIsUp--; - return 0; - } - - rc = ggiExtensionUnregister(ggiMesaID); - ggFreeConfig(_ggimesaConfigHandle); - - _ggimesaLibIsUp = 0; - - return rc; -} int ggiMesaAttach(ggi_visual_t vis) { int rc; - + GGIMESADPRINT_CORE("ggiMesaAttach() called\n"); - - rc = ggiExtensionAttach(vis, ggiMesaID); + + rc = ggiExtensionAttach(vis, _ggiMesaID); if (rc == 0) { int r, g, b, ci; @@ -419,7 +524,7 @@ { GGIMESADPRINT_CORE("ggiMesaDetach() called\n"); - return ggiExtensionDetach(vis, ggiMesaID); + return ggiExtensionDetach(vis, _ggiMesaID); } int ggiMesaExtendVisual(ggi_visual_t vis, GLboolean alpha_flag, @@ -531,10 +636,10 @@ if (ctx->gl_ctx->Viewport.Width == 0) { _mesa_Viewport(0, 0, - LIBGGI_MODE(vis)->visible.x, - LIBGGI_MODE(vis)->visible.y); - ctx->gl_ctx->Scissor.Width = LIBGGI_MODE(vis)->visible.x; - ctx->gl_ctx->Scissor.Height = LIBGGI_MODE(vis)->visible.y; + LIBGGI_VIRTX(vis), + LIBGGI_VIRTY(vis)); + ctx->gl_ctx->Scissor.Width = LIBGGI_VIRTX(vis); + ctx->gl_ctx->Scissor.Height = LIBGGI_VIRTY(vis); } } @@ -579,6 +684,7 @@ _swsetup_InvalidateState(ctx, new_state); _tnl_InvalidateState(ctx, new_state); + /* XXX: Better use an assertion that bails out here on failure */ if (!LIBGGI_MESAEXT(ggi_ctx->ggi_visual)->update_state) { GGIMESADPRINT_CORE("update_state == NULL!\n"); GGIMESADPRINT_CORE("Please check your config files!\n"); @@ -588,59 +694,3 @@ LIBGGI_MESAEXT(ggi_ctx->ggi_visual)->update_state(ggi_ctx); } -static int changed(ggi_visual_t vis, int whatchanged) -{ - GLcontext *ctx; - ctx = _mesa_get_current_context(); - - GGIMESADPRINT_CORE("changed() called\n"); - - switch (whatchanged) - { - case GGI_CHG_APILIST: - { - char api[256]; - char args[256]; - int i; - const char *fname; - ggi_dlhandle *lib; - GLvisual *gl_vis=&(LIBGGI_MESAEXT(vis)->mesa_visual.gl_visual); - GLframebuffer *gl_fb = &(LIBGGI_MESAEXT(vis)->mesa_buffer); - - /* Initialize the framebuffer to provide all necessary - buffers in software. The target libraries that are loaded - next are free to modify this according to their - capabilities. - */ - /* FIXME: if the target changes capabilities we'll leak - swrast's memory !!! Need to deallocate first */ - _mesa_initialize_framebuffer(gl_fb, gl_vis, - gl_vis->depthBits > 0, - gl_vis->stencilBits > 0, - gl_vis->accumRedBits > 0, - gl_vis->alphaBits > 0); - - for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++) - { - strcat(api, "-mesa"); - fname = ggMatchConfig(_ggimesaConfigHandle, api, NULL); - if (fname == NULL) - { - /* No special implementation for this sublib */ - continue; - } - lib = ggiExtensionLoadDL(vis, fname, args, NULL, - GGI_SYMNAME_PREFIX); - } - - /* The targets have cleared everything they can do from - the framebuffer structure so we provide the rest in sw - */ - _swrast_alloc_buffers(gl_fb); - - break; - } - } - return 0; -} - diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h --- xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h 2004-06-16 11:18:46.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h 2004-12-15 02:51:01.000000000 +0100 @@ -75,7 +75,7 @@ ggi_pixel color; /* Current color or index*/ ggi_pixel clearcolor; - void *private; + void *priv; }; #define SHIFT (GGI_COLOR_PRECISION - 8) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa_int.h x11r682/xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa_int.h --- xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa_int.h 2004-06-16 11:18:46.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa_int.h 2004-12-15 02:51:01.000000000 +0100 @@ -4,9 +4,8 @@ #include #include "ggimesa.h" -#define GGI_SYMNAME_PREFIX "MesaGGIdl_" -extern ggi_extid ggiMesaID; +extern ggi_extid _ggiMesaID; ggifunc_setmode GGIMesa_setmode; ggifunc_getapi GGIMesa_getapi; @@ -39,7 +38,7 @@ void *private; } ggi_mesa_ext_t; -#define LIBGGI_MESAEXT(vis) ((ggi_mesa_ext_t *)LIBGGI_EXT(vis,ggiMesaID)) -#define GGIMESA_PRIVATE(vis) ((LIBGGI_MESAEXT(vis)->private)) +#define LIBGGI_MESAEXT(vis) ((ggi_mesa_ext_t *)LIBGGI_EXT(vis,_ggiMesaID)) +#define GGIMESA_PRIV(vis) ((LIBGGI_MESAEXT(vis)->priv)) #endif /* _GGI_MISC_INT_H */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fx.rc x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fx.rc --- xc/extras/Mesa/src/mesa/drivers/glide/fx.rc 2004-08-28 06:27:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fx.rc 2004-12-15 02:51:01.000000000 +0100 @@ -5,10 +5,10 @@ #define HWSTR "3dfx Voodoo Graphics, Voodoo^2, Voodoo Banshee, Velocity 100/200, Voodoo3, Voodoo4, Voodoo5" #define COPYRIGHTSTR "Copyright \251 Brian E. Paul" -#define VERSIONSTR "6.1.0.9" +#define VERSIONSTR "6.2.0.1" #define MANVERSION 6 -#define MANREVISION 1 -#define BUILD_NUMBER 9 +#define MANREVISION 2 +#define BUILD_NUMBER 1 VS_VERSION_INFO VERSIONINFO FILEVERSION MANVERSION, MANREVISION, 0, BUILD_NUMBER diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxapi.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxapi.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxapi.c 2004-08-28 06:27:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxapi.c 2004-12-15 02:51:01.000000000 +0100 @@ -356,11 +356,7 @@ } grSstSelect(glbCurrentBoard); - /*grEnable(GR_OPENGL_MODE_EXT);*/ /* ZZZ: trick to make GL happy. - Glide3 will unmap memory for card when grSstWinClose is called. - This also forces the SLI band height to be 32 (above 1024x768) or 16 - and disables the splash screen due to y-origin swapping. - Note: We only want the former. */ + /*grEnable(GR_OPENGL_MODE_EXT);*/ /* [koolsmoky] */ voodoo = &glbHWConfig.SSTs[glbCurrentBoard]; fxMesa = (fxMesaContext)CALLOC_STRUCT(tfxMesaContext); @@ -393,7 +389,7 @@ case GR_SSTTYPE_SST96: case GR_SSTTYPE_Banshee: fxMesa->bgrOrder = GL_TRUE; - fxMesa->snapVertices = GL_TRUE; + fxMesa->snapVertices = (getenv("MESA_FX_NOSNAP") == NULL); break; case GR_SSTTYPE_Voodoo2: fxMesa->bgrOrder = GL_TRUE; @@ -411,7 +407,7 @@ fxMesa->snapVertices = GL_FALSE; break; } - /* ZZZ TO DO: Add the old SLI/AA settings for Napalm. */ + /* XXX todo - Add the old SLI/AA settings for Napalm. */ switch(voodoo->numChips) { case 4: /* 4 chips */ switch(sliaa) { @@ -526,8 +522,6 @@ goto errorhandler; } - /* ZZZ TODO: check if there is enough fbRam */ - /* Tips: * 1. we don't bother setting/checking AUX for stencil, because we'll decide * later whether we have HW stencil, based on depth buffer (thus AUX is @@ -644,7 +638,7 @@ fxMesa->snapVertices ? "" : "no "); } - sprintf(fxMesa->rendererString, "Mesa %s v0.61 %s%s", + sprintf(fxMesa->rendererString, "Mesa %s v0.62 %s%s", grGetString(GR_RENDERER), grGetString(GR_HARDWARE), ((fxMesa->type < GR_SSTTYPE_Voodoo4) && (voodoo->numChips > 1)) ? " SLI" : ""); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxdd.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxdd.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxdd.c 2004-08-28 06:27:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxdd.c 2004-12-15 02:51:01.000000000 +0100 @@ -160,26 +160,14 @@ (int) x, (int) y, (int) width, (int) height ); } - /* Need this check to respond to glScissor and clipping updates */ - /* should also take care of FX_NEW_COLOR_MASK, FX_NEW_STENCIL, depth? */ - if (fxMesa->new_state & FX_NEW_SCISSOR) { - fxSetupScissor(ctx); - fxMesa->new_state &= ~FX_NEW_SCISSOR; - } + /* we can't clear accum buffers nor stereo */ + mask &= ~(DD_ACCUM_BIT | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT); - /* we can't clear accum buffers */ - mask &= ~(DD_ACCUM_BIT); - - /* - * As per GL spec, stencil masking should be obeyed when clearing - */ - if (mask & DD_STENCIL_BIT) { - if (!fxMesa->haveHwStencil || fxMesa->unitsState.stencilWriteMask != 0xff) { - /* Napalm seems to have trouble with stencil write masks != 0xff */ - /* do stencil clear in software */ - softwareMask |= DD_STENCIL_BIT; - mask &= ~(DD_STENCIL_BIT); - } + /* Need this check to respond to certain HW updates */ + if (fxMesa->new_state & (FX_NEW_SCISSOR | FX_NEW_COLOR_MASK)) { + fxSetupScissor(ctx); + fxSetupColorMask(ctx); + fxMesa->new_state &= ~(FX_NEW_SCISSOR | FX_NEW_COLOR_MASK); } /* @@ -202,7 +190,7 @@ */ BEGIN_BOARD_LOCK(); if (mask & DD_STENCIL_BIT) { - fxMesa->Glide.grStencilMaskExt(0xff /*fxMesa->unitsState.stencilWriteMask*/); + fxMesa->Glide.grStencilMaskExt(fxMesa->unitsState.stencilWriteMask); /* set stencil ref value = desired clear value */ fxMesa->Glide.grStencilFuncExt(GR_CMP_ALWAYS, clearS, 0xff); fxMesa->Glide.grStencilOpExt(GR_STENCILOP_REPLACE, @@ -213,6 +201,9 @@ grDisable(GR_STENCIL_MODE_EXT); } END_BOARD_LOCK(); + } else if (mask & DD_STENCIL_BIT) { + softwareMask |= (mask & (DD_STENCIL_BIT)); + mask &= ~(DD_STENCIL_BIT); } /* @@ -228,8 +219,7 @@ switch (mask & ~DD_STENCIL_BIT) { case DD_BACK_LEFT_BIT | DD_DEPTH_BIT: /* back buffer & depth */ - /* FX_grColorMaskv_NoLock(ctx, true4); */ /* work around Voodoo3 bug */ - grDepthMask(FXTRUE); + grDepthMask(FXTRUE); grRenderBuffer(GR_BUFFER_BACKBUFFER); if (stencil_size > 0) { fxMesa->Glide.grBufferClearExt(fxMesa->clearC, @@ -240,9 +230,6 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (!fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXFALSE); - } break; case DD_FRONT_LEFT_BIT | DD_DEPTH_BIT: /* XXX it appears that the depth buffer isn't cleared when @@ -250,9 +237,9 @@ * This is a work-around/ */ /* clear depth */ - grDepthMask(FXTRUE); - grRenderBuffer(GR_BUFFER_BACKBUFFER); + grDepthMask(FXTRUE); fxDisableColor(fxMesa); + grRenderBuffer(GR_BUFFER_BACKBUFFER); if (stencil_size > 0) fxMesa->Glide.grBufferClearExt(fxMesa->clearC, fxMesa->clearA, @@ -261,8 +248,9 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - /* clear front */ fxSetupColorMask(ctx); + grDepthMask(FXFALSE); + /* clear front */ grRenderBuffer(GR_BUFFER_FRONTBUFFER); if (stencil_size > 0) fxMesa->Glide.grBufferClearExt(fxMesa->clearC, @@ -272,9 +260,6 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (!fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXFALSE); - } break; case DD_BACK_LEFT_BIT: /* back buffer only */ @@ -288,9 +273,6 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXTRUE); - } break; case DD_FRONT_LEFT_BIT: /* front buffer only */ @@ -304,9 +286,6 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXTRUE); - } break; case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT: /* front and back */ @@ -329,15 +308,12 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXTRUE); - } break; case DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT | DD_DEPTH_BIT: - /* clear front */ - grDepthMask(FXFALSE); - grRenderBuffer(GR_BUFFER_FRONTBUFFER); - if (stencil_size > 0) + /* clear back and depth */ + grDepthMask(FXTRUE); + grRenderBuffer(GR_BUFFER_BACKBUFFER); + if (stencil_size > 0) fxMesa->Glide.grBufferClearExt(fxMesa->clearC, fxMesa->clearA, clearD, clearS); @@ -345,10 +321,10 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - /* clear back and depth */ - grDepthMask(FXTRUE); - grRenderBuffer(GR_BUFFER_BACKBUFFER); - if (stencil_size > 0) + /* clear front */ + grDepthMask(FXFALSE); + grRenderBuffer(GR_BUFFER_FRONTBUFFER); + if (stencil_size > 0) fxMesa->Glide.grBufferClearExt(fxMesa->clearC, fxMesa->clearA, clearD, clearS); @@ -356,15 +332,12 @@ grBufferClear(fxMesa->clearC, fxMesa->clearA, clearD); - if (!fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXFALSE); - } break; case DD_DEPTH_BIT: /* just the depth buffer */ - grRenderBuffer(GR_BUFFER_BACKBUFFER); + grDepthMask(FXTRUE); fxDisableColor(fxMesa); - grDepthMask(FXTRUE); + grRenderBuffer(GR_BUFFER_BACKBUFFER); if (stencil_size > 0) fxMesa->Glide.grBufferClearExt(fxMesa->clearC, fxMesa->clearA, @@ -374,41 +347,29 @@ fxMesa->clearA, clearD); fxSetupColorMask(ctx); - if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT) { - grRenderBuffer(GR_BUFFER_FRONTBUFFER); - } - if (!fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXFALSE); - } break; default: /* clear no color buffers or depth buffer but might clear stencil */ - if (stencil_size > 0 && (mask & DD_STENCIL_BIT)) { + if ((stencil_size > 0) && (mask & DD_STENCIL_BIT)) { /* XXX need this RenderBuffer call to work around Glide bug */ - grRenderBuffer(GR_BUFFER_BACKBUFFER); grDepthMask(FXFALSE); + grRenderBuffer(GR_BUFFER_BACKBUFFER); fxDisableColor(fxMesa); fxMesa->Glide.grBufferClearExt(fxMesa->clearC, fxMesa->clearA, clearD, clearS); - if (fxMesa->unitsState.depthTestEnabled) { - grDepthMask(FXTRUE); - } fxSetupColorMask(ctx); - if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT) { - grRenderBuffer(GR_BUFFER_FRONTBUFFER); - } } } } END_CLIP_LOOP(); - if (fxMesa->haveHwStencil && (mask & DD_STENCIL_BIT)) { - /* We changed the stencil state above. Signal that we need to - * upload it again. - */ - fxMesa->new_state |= FX_NEW_STENCIL; + if (fxMesa->haveHwStencil) { + /* We changed the stencil state above. Restore it! */ + fxSetupStencil(ctx); } + fxSetupDepthTest(ctx); + grRenderBuffer(fxMesa->currentFB); if (softwareMask) _swrast_Clear( ctx, softwareMask, all, x, y, width, height ); @@ -417,6 +378,7 @@ /* Set the buffer used for drawing */ /* XXX support for separate read/draw buffers hasn't been tested */ +/* XXX GL_NONE disables color, but fails to correctly maintain state */ static void fxDDSetDrawBuffer(GLcontext * ctx, GLenum mode) { @@ -1693,7 +1655,7 @@ } static const struct tnl_pipeline_stage *fx_pipeline[] = { - &_tnl_vertex_transform_stage, /* TODO: Add the fastpath here */ + &_tnl_vertex_transform_stage, /* XXX todo - Add the fastpath here */ &_tnl_normal_transform_stage, &_tnl_lighting_stage, &_tnl_fog_coordinate_stage, @@ -1893,35 +1855,12 @@ _mesa_enable_extension(ctx, "GL_EXT_shared_texture_palette"); _mesa_enable_extension(ctx, "GL_EXT_blend_func_separate"); _mesa_enable_extension(ctx, "GL_EXT_texture_env_add"); + _mesa_enable_extension(ctx, "GL_EXT_stencil_wrap"); if (fxMesa->haveTwoTMUs) { _mesa_enable_extension(ctx, "GL_ARB_multitexture"); } - if (fxMesa->haveHwStencil) { - _mesa_enable_extension( ctx, "GL_EXT_stencil_wrap" ); - } - - /* [dBorca] Hack alert: - * True texture compression can be done only on Napalm. - * We will advertise, however, generic texture compression - * on all Voodoo cards; the Mesa logic allows us to eventually - * fallback to uncompressed. This will fix those dumb applications - * which refuse to run w/o texture compression! We actually _can_ - * do texture compression for pre-Napalm cores, through NCC. But - * NCC poses many issues: - * 1) NCC w/o DITHER_ERR has poor quality and NCC w/ DITHER_ERR is - * damn slow! - * 2) NCC compression cannot be used with multitexturing, because - * the decompression tables are not per TMU anymore (bear in mind - * that earlier Voodoos could handle 2 NCC tables for each TMU -- - * just look for POINTCAST_PALETTE). As a last resort, we could - * fake NCC multitexturing through multipass rendering, but... - * ohwell, it's not worth the effort... - * This stand true for multitexturing palletized textures. - * 3) since NCC is not an OpenGL standard (as opposed to FXT1/DXTC), we - * can't use precompressed textures! - */ if (fxMesa->type >= GR_SSTTYPE_Voodoo4) { _mesa_enable_extension(ctx, "GL_ARB_texture_compression"); _mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1"); @@ -1929,17 +1868,31 @@ _mesa_enable_extension(ctx, "GL_S3_s3tc"); _mesa_enable_extension(ctx, "GL_NV_blend_square"); } else { +#if FX_TC_NCC + /* [dBorca] Hack alert: + * 1) NCC w/o DITHER_ERR has poor quality and NCC w/ DITHER_ERR is + * damn slow! + * 2) NCC compression cannot be used with multitexturing, because + * the decompression tables are not per TMU anymore (bear in mind + * that earlier Voodoos could handle 2 NCC tables for each TMU -- + * just look for POINTCAST_PALETTE). As a last resort, we could + * fake NCC multitexturing through multipass rendering, but... + * ohwell, it's not worth the effort... + * This stand true for multitexturing palletized textures. + * 3) since NCC is not an OpenGL standard (as opposed to FXT1/DXTC), we + * can't use precompressed textures! + */ if (fxMesa->HaveTexus2) { _mesa_enable_extension(ctx, "GL_ARB_texture_compression"); } -#if FX_TC_NCC - else -#endif +#else /* doesn't like texture compression */ _mesa_enable_extension(ctx, "GL_SGIS_generate_mipmap"); +#endif } if (fxMesa->HaveCmbExt) { + _mesa_enable_extension(ctx, "GL_ARB_texture_env_combine"); _mesa_enable_extension(ctx, "GL_EXT_texture_env_combine"); } @@ -2016,8 +1969,7 @@ #if 0 /* [dBorca] * We fail the spec here, unless certain blending modes: - * (c1 + c2) * 1 + d * 1 = c1 * 1 + d * 1 + c2 * 1 - * (c1 + c2) * 1 + d * 0 = c1 * 1 + d * 0 + c2 * 1 + * RGB: (GL_ONE + GL_*) or (GL_ZERO + GL_*) or ... */ if (NEED_SECONDARY_COLOR(ctx)) { if ((ctx->Color.BlendEquationRGB != GL_FUNC_ADD) && diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxddspan.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxddspan.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxddspan.c 2004-08-28 06:27:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxddspan.c 2004-12-15 02:51:01.000000000 +0100 @@ -100,30 +100,23 @@ #define HW_WRITE_CLIPLOOP() \ do { \ - const int _nc = 1; /* numcliprects */ \ - /* [dBorca] Hack alert: */ \ /* remember, we need to flip the scissor, too */ \ /* is it better to do it inside fxDDScissor? */ \ - while (_nc--) { \ - const int minx = fxMesa->clipMinX; \ - const int maxy = Y_FLIP(fxMesa->clipMinY); \ - const int maxx = fxMesa->clipMaxX; \ - const int miny = Y_FLIP(fxMesa->clipMaxY); + const int minx = fxMesa->clipMinX; \ + const int maxy = Y_FLIP(fxMesa->clipMinY); \ + const int maxx = fxMesa->clipMaxX; \ + const int miny = Y_FLIP(fxMesa->clipMaxY); #define HW_READ_CLIPLOOP() \ do { \ - const int _nc = 1; /* numcliprects */ \ - /* [dBorca] Hack alert: */ \ /* remember, we need to flip the scissor, too */ \ /* is it better to do it inside fxDDScissor? */ \ - while (_nc--) { \ - const int minx = fxMesa->clipMinX; \ - const int maxy = Y_FLIP(fxMesa->clipMinY); \ - const int maxx = fxMesa->clipMaxX; \ - const int miny = Y_FLIP(fxMesa->clipMaxY); + const int minx = fxMesa->clipMinX; \ + const int maxy = Y_FLIP(fxMesa->clipMinY); \ + const int maxx = fxMesa->clipMaxX; \ + const int miny = Y_FLIP(fxMesa->clipMaxY); #define HW_ENDCLIPLOOP() \ - } \ } while (0) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxddtex.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxddtex.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxddtex.c 2004-08-28 06:27:43.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxddtex.c 2004-12-15 02:51:01.000000000 +0100 @@ -60,12 +60,12 @@ GLint dstWidth = srcWidth / 2; GLint dstHeight = srcHeight / 2; GLint srcRowStride = srcWidth * bytesPerPixel; - GLubyte *src = srcImage; + GLubyte *src = (GLubyte *)srcImage; GLubyte *dst = dstImage; GLuint bpt = 0; - GLubyte *_s; - GLubyte *_d; + GLubyte *_s = NULL; + GLubyte *_d = NULL; GLenum _t; if (texImage->TexFormat->MesaFormat == MESA_FORMAT_RGB565) { @@ -615,21 +615,8 @@ fprintf(stderr, "fxDDTexUseGlbPalette(%d)\n", state); } - if (state) { - fxMesa->haveGlobalPaletteTexture = 1; - } - else { - fxMesa->haveGlobalPaletteTexture = 0; - - /* [dBorca] tis beyond my comprehension */ - if ((ctx->Texture.Unit[0]._Current == ctx->Texture.Unit[0].Current2D) && - (ctx->Texture.Unit[0]._Current != NULL)) { - struct gl_texture_object *tObj = ctx->Texture.Unit[0]._Current; - if (!tObj->DriverData) - tObj->DriverData = fxAllocTexObjData(fxMesa); - fxTexInvalidate(ctx, tObj); - } - } + fxMesa->haveGlobalPaletteTexture = state; + fxMesa->new_state |= FX_NEW_TEXTURING; } @@ -1539,17 +1526,7 @@ ti->info.format = mml->glideFormat; texImage->FetchTexelc = fxFetchFunction(texImage->TexFormat->MesaFormat); - /* [dBorca] - * Hack alert: unsure... - */ - if (0 && ti->validated && ti->isInTM) { - /*fprintf(stderr, "reloadmipmaplevels\n"); */ - fxTMReloadMipMapLevel(fxMesa, texObj, level); - } - else { - /*fprintf(stderr, "invalidate2\n"); */ - fxTexInvalidate(ctx, texObj); - } + fxTexInvalidate(ctx, texObj); } @@ -1781,17 +1758,7 @@ assert(!texImage->IsCompressed); } - /* [dBorca] - * Hack alert: unsure... - */ - if (0 && ti->validated && ti->isInTM) { - /*fprintf(stderr, "reloadmipmaplevels\n"); */ - fxTMReloadMipMapLevel(fxMesa, texObj, level); - } - else { - /*fprintf(stderr, "invalidate2\n"); */ - fxTexInvalidate(ctx, texObj); - } + fxTexInvalidate(ctx, texObj); } @@ -1829,7 +1796,7 @@ mml->width, (GLubyte*) texImage->Data); - rows = height / 4; /* [dBorca] hardcoded 4, but works for FXT1/DXTC */ + rows = height / 4; /* hardcoded 4, but works for FXT1/DXTC */ for (i = 0; i < rows; i++) { MEMCPY(dest, data, srcRowStride); @@ -1905,9 +1872,7 @@ GLint width, GLint height, GLint depth, GLint border) { - /* [dBorca] - * TODO - maybe through fxTexValidate() - */ + /* XXX todo - maybe through fxTexValidate() */ return _mesa_test_proxy_teximage(ctx, target, level, internalFormat, format, type, diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxdrv.h x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxdrv.h --- xc/extras/Mesa/src/mesa/drivers/glide/fxdrv.h 2004-07-22 08:52:21.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxdrv.h 2004-12-15 02:51:01.000000000 +0100 @@ -714,6 +714,7 @@ void fxSetupBlend (GLcontext *ctx); void fxSetupDepthTest (GLcontext *ctx); void fxSetupTexture (GLcontext *ctx); +void fxSetupStencil (GLcontext *ctx); /* Flags for software fallback cases */ #define FX_FALLBACK_TEXTURE_MAP 0x0001 @@ -730,6 +731,28 @@ extern GLuint fx_check_IsInHardware(GLcontext *ctx); +/*** + *** CNORM: clamp float to [0,1] and map to float in [0,255] + ***/ +#if defined(USE_IEEE) && !defined(DEBUG) +#define IEEE_0996 0x3f7f0000 /* 0.996 or so */ +#define CNORM(N, F) \ + do { \ + fi_type __tmp; \ + __tmp.f = (F); \ + if (__tmp.i < 0) \ + N = 0; \ + else if (__tmp.i >= IEEE_0996) \ + N = 255.0f; \ + else { \ + N = (F) * 255.0f; \ + } \ + } while (0) +#else +#define CNORM(n, f) \ + n = (CLAMP((f), 0.0F, 1.0F) * 255.0F) +#endif + /* run-time debugging */ #ifndef FX_DEBUG #define FX_DEBUG 0 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.c 2004-06-16 11:18:48.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.c 2004-12-15 02:51:01.000000000 +0100 @@ -126,7 +126,12 @@ grCoordinateSpace(GR_WINDOW_COORDS); grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET << 2, GR_PARAM_ENABLE); +#if FX_PACKEDCOLOR grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_PARGB_OFFSET << 2, GR_PARAM_ENABLE); +#else /* !FX_PACKEDCOLOR */ + grVertexLayout(GR_PARAM_RGB, GR_VERTEX_RGB_OFFSET << 2, GR_PARAM_ENABLE); + grVertexLayout(GR_PARAM_A, GR_VERTEX_A_OFFSET << 2, GR_PARAM_ENABLE); +#endif /* !FX_PACKEDCOLOR */ grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET << 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET << 2, GR_PARAM_ENABLE); grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET << 2, @@ -210,7 +215,7 @@ config->SSTs[i].type = GR_SSTTYPE_VOODOO; } - grGet(GR_MEMORY_FB, 4, &result); /* ZZZ: differs after grSstWinOpen */ + grGet(GR_MEMORY_FB, 4, &result); config->SSTs[i].fbRam = result / (1024 * 1024); grGet(GR_NUM_TMU, 4, &result); @@ -220,7 +225,7 @@ config->SSTs[i].fbiRev = result; for (j = 0; j < config->SSTs[i].nTexelfx; j++) { - grGet(GR_MEMORY_TMU, 4, &result); /* ZZZ: differs after grSstWinOpen */ + grGet(GR_MEMORY_TMU, 4, &result); config->SSTs[i].tmuConfig[j].tmuRam = result / (1024 * 1024); grGet(GR_REVISION_TMU, 4, &result); config->SSTs[i].tmuConfig[j].tmuRev = result; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.h x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.h --- xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.h 2004-06-16 11:18:48.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxglidew.h 2004-12-15 02:51:01.000000000 +0100 @@ -38,7 +38,9 @@ #include "fxg.h" - +#ifndef FX_PACKEDCOLOR +#define FX_PACKEDCOLOR 1 +#endif #define MAX_NUM_SST 4 @@ -112,6 +114,7 @@ float oow; /* 1/w (used mipmapping - really 0xfff/w) */ } GrTmuVertex; +#if FX_PACKEDCOLOR typedef struct { float x, y; /* X and Y in screen space */ float ooz; /* 65535/Z (used for Z-buffering) */ @@ -137,6 +140,34 @@ #define GR_VERTEX_OOW_TMU1_OFFSET 10 #define GR_VERTEX_FOG_OFFSET 11 #define GR_VERTEX_PSPEC_OFFSET 12 +#else /* !FX_PACKEDCOLOR */ +typedef struct { + float x, y; /* X and Y in screen space */ + float ooz; /* 65535/Z (used for Z-buffering) */ + float oow; /* 1/W (used for W-buffering, texturing) */ + float r, g, b, a; /* R, G, B, A [0..255] */ + GrTmuVertex tmuvtx[GLIDE_NUM_TMU]; + float fog; /* fog coordinate */ + float r1, g1, b1; /* R, G, B [0..255] */ + float psize; /* point size */ + long pad[20 - 19]; /* ensure multiple of 16 */ +} GrVertex; + +#define GR_VERTEX_X_OFFSET 0 +#define GR_VERTEX_Y_OFFSET 1 +#define GR_VERTEX_OOZ_OFFSET 2 +#define GR_VERTEX_OOW_OFFSET 3 +#define GR_VERTEX_RGB_OFFSET 4 +#define GR_VERTEX_A_OFFSET 7 +#define GR_VERTEX_SOW_TMU0_OFFSET 8 +#define GR_VERTEX_TOW_TMU0_OFFSET 9 +#define GR_VERTEX_OOW_TMU0_OFFSET 10 +#define GR_VERTEX_SOW_TMU1_OFFSET 11 +#define GR_VERTEX_TOW_TMU1_OFFSET 12 +#define GR_VERTEX_OOW_TMU1_OFFSET 13 +#define GR_VERTEX_FOG_OFFSET 14 +#define GR_VERTEX_SPEC_OFFSET 15 +#endif /* !FX_PACKEDCOLOR */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.c 2004-08-28 06:27:44.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.c 2004-12-15 02:51:01.000000000 +0100 @@ -76,9 +76,7 @@ const GLvoid *srcImage, GLvoid *dstImage ); fxMesaContext fxMesa = FX_CONTEXT(ctx); /* [dBorca] - * Ooooooook! Here's a(nother) long story. - * We get here because we need to handle a texture larger - * than hardware can support. Two cases: + * Fake textures larger than HW supports: * 1) we have mipmaps. Then we just push up to the first supported * LOD. A possible drawback is that Mesa will ignore the skipped * LODs on further texture handling. @@ -88,13 +86,6 @@ * once in TexImage2D to accomodate aspect ratio, and now we * are rescaling again. The thing is, in TexImage2D we don't * know whether we'll hit 1) or 2) by the time of validation. - * NB: we could handle mml->[wh]Scale nicely, using (biased) shifts. - * - * Which brings me to another issue. How can we handle NPOT textures? - * - rescaling NPOT to the next bigger POT (mml->[wh]Scale can't shift) - * - upping the max LOD to the next power-of-two, in fxTexGetInfo; then - * choosing non-power-of-two values for ti->[st]Scale... Anyhow, we - * still need to align mipmaps correctly in texture memory! */ if ((tObj->MinFilter == GL_NEAREST) || (tObj->MinFilter == GL_LINEAR)) { /* no mipmaps! */ @@ -155,7 +146,7 @@ else FX_smallLodLog2(ti->info) = FX_largeLodLog2(ti->info); - /* this is necessary because of fxDDCompressedTexImage2D */ + /* [dBorca] this is necessary because of fxDDCompressedTexImage2D */ if (ti->padded) { struct gl_texture_image *texImage = tObj->Image[0][minl]; tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage); @@ -351,9 +342,7 @@ fprintf(stderr, "fxSetupSingleTMU_NoLock(%p (%d))\n", (void *)tObj, tObj->Name); } -#if 1 /* [dBorca] Good... bad... I'm the guy with the gun! */ ti->lastTimeUsed = fxMesa->texBindNumber; -#endif /* Make sure we're not loaded incorrectly */ if (ti->isInTM) { @@ -654,10 +643,9 @@ colorComb.Factor = GR_COMBINE_FACTOR_TEXTURE_ALPHA; colorComb.Other = GR_COMBINE_OTHER_CONSTANT; } else { - /* [dBorca] Hack alert: - * only Voodoo^2 can GL_BLEND (GR_COMBINE_FACTOR_TEXTURE_RGB) - * These settings assume that the TexEnv color is black - * and incoming fragment color is white. + /* Only Voodoo^2 can GL_BLEND (GR_COMBINE_FACTOR_TEXTURE_RGB) + * These settings assume that the TexEnv color is black and + * incoming fragment color is white. */ colorComb.Function = GR_COMBINE_FUNCTION_SCALE_OTHER; colorComb.Factor = GR_COMBINE_FACTOR_ONE; @@ -1781,7 +1769,7 @@ } } -static void +void fxSetupStencil (GLcontext * ctx) { fxMesaContext fxMesa = FX_CONTEXT(ctx); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.h x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.h --- xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.h 2004-06-16 11:18:49.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxsetup.h 2004-12-15 02:51:01.000000000 +0100 @@ -32,8 +32,7 @@ */ /* fxsetup.c - 3Dfx VooDoo rendering mode setup functions */ -/* [dBorca] Hack alert: - * this code belongs to fxsetup.c, but I didn't want to clutter +/* This code belongs to fxsetup.c, but I didn't want to clutter * the original code with Napalm specifics, in order to keep things * clear -- especially for backward compatibility. I should have * put it into another .c file, but I didn't want to export so many @@ -379,9 +378,7 @@ break; /* COMBINE_EXT */ case GL_COMBINE_EXT: - /* [dBorca] Hack alert: - * INCOMPLETE!!! - */ + /* XXX todo - INCOMPLETE!!! */ if (TDFX_DEBUG & (VERBOSE_DRIVER | VERBOSE_TEXTURE)) { #if 1 fprintf(stderr, "COMBINE_EXT: %s + %s\n", @@ -1024,10 +1021,7 @@ } if (LODblend) { - /* [dBorca] Hack alert: - * TODO: GR_CMBX_LOD_FRAC - */ - + /* XXX todo - GR_CMBX_LOD_FRAC? */ fxMesa->tmuSrc = FX_TMU_SPLIT; } else { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxtexman.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxtexman.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxtexman.c 2004-06-16 11:18:49.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxtexman.c 2004-12-15 02:51:01.000000000 +0100 @@ -486,7 +486,7 @@ /*texmemsize = (int)grTexTextureMemRequired(GR_MIPMAPLEVELMASK_BOTH, &(ti->info));*/ ti->tm[FX_TMU1] = fxTMAddObj(fxMesa, tObj, FX_TMU1, texmemsize); - fxMesa->stats.memTexUpload += texmemsize; /* ZZZ: required? */ + fxMesa->stats.memTexUpload += texmemsize; for (i = FX_largeLodValue(ti->info), l = ti->minLevel; i <= FX_smallLodValue(ti->info); i++, l++) { @@ -550,6 +550,7 @@ assert(mml->width > 0); assert(mml->height > 0); assert(mml->glideFormat > 0); + assert(ti->isInTM); if (!ti->validated) { fprintf(stderr, "fxTMReloadMipMapLevel: INTERNAL ERROR: not validated\n"); @@ -558,17 +559,8 @@ } tmu = (int) ti->whichTMU; -#if 0 - /* [dBorca] - * We get here by (see Tex[Sub]Image2D), thus we are in TMU. - * Also, we just set the correct TMU above. fxTMMoveInTM will - * bail early, so don't bother... - */ - fxTMMoveInTM(fxMesa, tObj, tmu); -#else fxMesa->stats.reqTexUpload++; fxMesa->stats.texUpload++; -#endif lodlevel = ti->info.largeLodLog2 - (level - ti->minLevel); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxtris.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxtris.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxtris.c 2004-08-28 06:27:44.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxtris.c 2004-12-15 02:51:01.000000000 +0100 @@ -146,6 +146,7 @@ dst->win[2] = src->ooz; dst->win[3] = src->oow; +#if FX_PACKEDCOLOR dst->color[0] = src->pargb[2]; dst->color[1] = src->pargb[1]; dst->color[2] = src->pargb[0]; @@ -154,6 +155,16 @@ dst->specular[0] = src->pspec[2]; dst->specular[1] = src->pspec[1]; dst->specular[2] = src->pspec[0]; +#else /* !FX_PACKEDCOLOR */ + dst->color[0] = src->r; + dst->color[1] = src->g; + dst->color[2] = src->b; + dst->color[3] = src->a; + + dst->specular[0] = src->r1; + dst->specular[1] = src->g1; + dst->specular[2] = src->g1; +#endif /* !FX_PACKEDCOLOR */ dst->texcoord[ts0][0] = fxMesa->inv_s0scale * src->tmuvtx[0].sow * w; dst->texcoord[ts0][1] = fxMesa->inv_t0scale * src->tmuvtx[0].tow * w; @@ -227,7 +238,11 @@ fprintf(stderr, "\tvertex at %p\n", (void *) v); fprintf(stderr, "\tx %f y %f z %f oow %f\n", v->x, v->y, v->ooz, v->oow); +#if FX_PACKEDCOLOR fprintf(stderr, "\tr %d g %d b %d a %d\n", v->pargb[2], v->pargb[1], v->pargb[0], v->pargb[3]); +#else /* !FX_PACKEDCOLOR */ + fprintf(stderr, "\tr %f g %f b %f a %f\n", v->r, v->g, v->b, v->a); +#endif /* !FX_PACKEDCOLOR */ fprintf(stderr, "\n"); } @@ -298,14 +313,25 @@ /* point coverage? */ /* we don't care about culling here (see fxSetupCull) */ - _v_[0].x -= radius; - _v_[0].y += radius; - _v_[1].x += radius; - _v_[1].y += radius; - _v_[2].x += radius; - _v_[2].y -= radius; - _v_[3].x -= radius; - _v_[3].y -= radius; + if (ctx->Point.SpriteOrigin == GL_UPPER_LEFT) { + _v_[0].x -= radius; + _v_[0].y += radius; + _v_[1].x += radius; + _v_[1].y += radius; + _v_[2].x += radius; + _v_[2].y -= radius; + _v_[3].x -= radius; + _v_[3].y -= radius; + } else { + _v_[0].x -= radius; + _v_[0].y -= radius; + _v_[1].x += radius; + _v_[1].y -= radius; + _v_[2].x += radius; + _v_[2].y += radius; + _v_[3].x -= radius; + _v_[3].y += radius; + } if (ctx->Point.CoordReplace[ts0]) { _v_[0].tmuvtx[0].sow = 0; @@ -340,7 +366,9 @@ GrVertex *_v_[3]; const GLcontext *ctx = fxMesa->glCtx; - const GLfloat psize = (ctx->_TriangleCaps & DD_POINT_ATTEN) ? v0->psize : ctx->Point.Size; + const GLfloat psize = (ctx->_TriangleCaps & DD_POINT_ATTEN) + ? CLAMP(v0->psize, ctx->Point.MinSize, ctx->Point.MaxSize) + : ctx->Point._Size; /* clamped */ if (ctx->Point.PointSprite) { fx_draw_point_sprite(fxMesa, v0, psize); @@ -415,7 +443,9 @@ GrVertex vtxB, vtxC; const GLcontext *ctx = fxMesa->glCtx; - const GLfloat psize = (ctx->_TriangleCaps & DD_POINT_ATTEN) ? v0->psize : ctx->Point.Size; + const GLfloat psize = (ctx->_TriangleCaps & DD_POINT_ATTEN) + ? CLAMP(v0->psize, ctx->Point.MinSize, ctx->Point.MaxSize) + : ctx->Point._Size; /* clamped */ if (ctx->Point.PointSprite) { fx_draw_point_sprite(fxMesa, v0, psize); @@ -499,6 +529,7 @@ #endif +#if FX_PACKEDCOLOR #define VERT_SET_RGBA( dst, f ) \ do { \ UNCLAMPED_FLOAT_TO_UBYTE(dst->pargb[2], f[0]);\ @@ -538,6 +569,74 @@ fxMesaContext fxMesa = FX_CONTEXT(ctx); \ GLubyte color[n][4], spec[n][4]; \ (void) color; (void) spec; +#else /* !FX_PACKEDCOLOR */ +#define VERT_SET_RGBA( dst, f ) \ +do { \ + CNORM(dst->r, f[0]); \ + CNORM(dst->g, f[1]); \ + CNORM(dst->b, f[2]); \ + CNORM(dst->a, f[3]); \ +} while (0) + +#define VERT_COPY_RGBA( v0, v1 ) \ +do { \ + *(GLuint *)&v0->r = *(GLuint *)&v1->r; \ + *(GLuint *)&v0->g = *(GLuint *)&v1->g; \ + *(GLuint *)&v0->b = *(GLuint *)&v1->b; \ + *(GLuint *)&v0->a = *(GLuint *)&v1->a; \ +} while (0) + +#define VERT_SAVE_RGBA( idx ) \ +do { \ + *(GLuint *)&color[idx][0] = *(GLuint *)&v[idx]->r;\ + *(GLuint *)&color[idx][1] = *(GLuint *)&v[idx]->g;\ + *(GLuint *)&color[idx][2] = *(GLuint *)&v[idx]->b;\ + *(GLuint *)&color[idx][3] = *(GLuint *)&v[idx]->a;\ +} while (0) + +#define VERT_RESTORE_RGBA( idx ) \ +do { \ + *(GLuint *)&v[idx]->r = *(GLuint *)&color[idx][0];\ + *(GLuint *)&v[idx]->g = *(GLuint *)&color[idx][1];\ + *(GLuint *)&v[idx]->b = *(GLuint *)&color[idx][2];\ + *(GLuint *)&v[idx]->a = *(GLuint *)&color[idx][3];\ +} while (0) + + +#define VERT_SET_SPEC( dst, f ) \ +do { \ + CNORM(dst->r1, f[0]); \ + CNORM(dst->g1, f[1]); \ + CNORM(dst->b1, f[2]); \ +} while (0) + +#define VERT_COPY_SPEC( v0, v1 ) \ +do { \ + *(GLuint *)&v0->r1 = *(GLuint *)&v1->r1; \ + *(GLuint *)&v0->g1 = *(GLuint *)&v1->g1; \ + *(GLuint *)&v0->b1 = *(GLuint *)&v1->b1; \ +} while (0) + +#define VERT_SAVE_SPEC( idx ) \ +do { \ + *(GLuint *)&spec[idx][0] = *(GLuint *)&v[idx]->r1;\ + *(GLuint *)&spec[idx][1] = *(GLuint *)&v[idx]->g1;\ + *(GLuint *)&spec[idx][2] = *(GLuint *)&v[idx]->b1;\ +} while (0) + +#define VERT_RESTORE_SPEC( idx ) \ +do { \ + *(GLuint *)&v[idx]->r1 = *(GLuint *)&spec[idx][0];\ + *(GLuint *)&v[idx]->g1 = *(GLuint *)&spec[idx][1];\ + *(GLuint *)&v[idx]->b1 = *(GLuint *)&spec[idx][2];\ +} while (0) + + +#define LOCAL_VARS(n) \ + fxMesaContext fxMesa = FX_CONTEXT(ctx); \ + GLuint color[n][4], spec[n][4]; \ + (void) color; (void) spec; +#endif /* !FX_PACKEDCOLOR */ @@ -904,7 +1003,6 @@ { fxMesaContext fxMesa = FX_CONTEXT(ctx); GrVertex *fxVB = fxMesa->verts; - int mode; (void) flags; if (TDFX_DEBUG & VERBOSE_VARRAY) { @@ -913,13 +1011,9 @@ INIT(GL_TRIANGLE_STRIP); - /* [dBorca] WTF?!? - if (flags & PRIM_PARITY) - mode = GR_TRIANGLE_STRIP_CONTINUE; - else*/ - mode = GR_TRIANGLE_STRIP; + /* no GR_TRIANGLE_STRIP_CONTINUE?!? */ - grDrawVertexArrayContiguous( mode, count-start, + grDrawVertexArrayContiguous( GR_TRIANGLE_STRIP, count-start, fxVB + start, sizeof(GrVertex)); } @@ -1273,58 +1367,41 @@ */ if (new_gl_state & _NEW_PROJECTION) fxMesa->new_state |= FX_NEW_FOG; - /* [dBorca] Hack alert: - * the above _NEW_PROJECTION is not included in the test below, - * so we may end up with fxMesa->new_state still dirty by the end - * of the routine. The fact is, we don't have NearFar callback - * anymore. We could use fxDDDepthRange instead, but it seems - * fog needs to be updated only by a fog-basis. - * Implementing fxDDDepthRange correctly is another story: - * that, together with a presumable fxDDViewport function would set - * fxMesa->SetupNewInputs |= VERT_BIT_CLIP; - * which might be useful in fxBuildVertices... - */ #endif - if (new_gl_state & (_FX_NEW_IS_IN_HARDWARE | - _FX_NEW_RENDERSTATE | - _FX_NEW_SETUP_FUNCTION | - _NEW_TEXTURE)) { - - if (new_gl_state & _FX_NEW_IS_IN_HARDWARE) - fxCheckIsInHardware(ctx); - - if (fxMesa->new_state) - fxSetupFXUnits(ctx); - - if (!fxMesa->fallback) { - if (new_gl_state & _FX_NEW_RENDERSTATE) - fxDDChooseRenderState(ctx); + if (new_gl_state & _FX_NEW_IS_IN_HARDWARE) + fxCheckIsInHardware(ctx); + + if (fxMesa->new_state) + fxSetupFXUnits(ctx); + + if (!fxMesa->fallback) { + if (new_gl_state & _FX_NEW_RENDERSTATE) + fxDDChooseRenderState(ctx); + + if (new_gl_state & _FX_NEW_SETUP_FUNCTION) + fxChooseVertexState(ctx); + } + + if (new_gl_state & _NEW_TEXTURE) { + struct gl_texture_unit *t0 = &ctx->Texture.Unit[fxMesa->tmu_source[0]]; + struct gl_texture_unit *t1 = &ctx->Texture.Unit[fxMesa->tmu_source[1]]; - if (new_gl_state & _FX_NEW_SETUP_FUNCTION) - fxChooseVertexState(ctx); + if (t0->_Current && FX_TEXTURE_DATA(t0)) { + fxMesa->s0scale = FX_TEXTURE_DATA(t0)->sScale; + fxMesa->t0scale = FX_TEXTURE_DATA(t0)->tScale; + fxMesa->inv_s0scale = 1.0 / fxMesa->s0scale; + fxMesa->inv_t0scale = 1.0 / fxMesa->t0scale; } - if (new_gl_state & _NEW_TEXTURE) { - struct gl_texture_unit *t0 = &ctx->Texture.Unit[fxMesa->tmu_source[0]]; - struct gl_texture_unit *t1 = &ctx->Texture.Unit[fxMesa->tmu_source[1]]; - - if (t0->_Current && FX_TEXTURE_DATA(t0)) { - fxMesa->s0scale = FX_TEXTURE_DATA(t0)->sScale; - fxMesa->t0scale = FX_TEXTURE_DATA(t0)->tScale; - fxMesa->inv_s0scale = 1.0 / fxMesa->s0scale; - fxMesa->inv_t0scale = 1.0 / fxMesa->t0scale; - } - - if (t1->_Current && FX_TEXTURE_DATA(t1)) { - fxMesa->s1scale = FX_TEXTURE_DATA(t1)->sScale; - fxMesa->t1scale = FX_TEXTURE_DATA(t1)->tScale; - fxMesa->inv_s1scale = 1.0 / fxMesa->s1scale; - fxMesa->inv_t1scale = 1.0 / fxMesa->t1scale; - } + if (t1->_Current && FX_TEXTURE_DATA(t1)) { + fxMesa->s1scale = FX_TEXTURE_DATA(t1)->sScale; + fxMesa->t1scale = FX_TEXTURE_DATA(t1)->tScale; + fxMesa->inv_s1scale = 1.0 / fxMesa->s1scale; + fxMesa->inv_t1scale = 1.0 / fxMesa->t1scale; } } - + fxMesa->new_gl_state = 0; _tnl_run_pipeline( ctx ); @@ -1483,7 +1560,7 @@ /* [dBorca] Hack alert: * doesn't work with blending. - * need to take care of stencil. + * XXX todo - need to take care of stencil. */ GLboolean fxMultipass_ColorSum (GLcontext *ctx, GLuint pass) { @@ -1518,7 +1595,11 @@ fxDDDepthMask( ctx, GL_FALSE ); } /* switch to secondary colors */ +#if FX_PACKEDCOLOR grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_PSPEC_OFFSET << 2, GR_PARAM_ENABLE); +#else /* !FX_PACKEDCOLOR */ + grVertexLayout(GR_PARAM_RGB, GR_VERTEX_SPEC_OFFSET << 2, GR_PARAM_ENABLE); +#endif /* !FX_PACKEDCOLOR */ /* don't advertise new state */ fxMesa->new_state = 0; break; @@ -1529,7 +1610,11 @@ ctx->Texture.Unit[0]._ReallyEnabled = t0; ctx->Texture.Unit[1]._ReallyEnabled = t1; /* revert to primary colors */ +#if FX_PACKEDCOLOR grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_PARGB_OFFSET << 2, GR_PARAM_ENABLE); +#else /* !FX_PACKEDCOLOR */ + grVertexLayout(GR_PARAM_RGB, GR_VERTEX_RGB_OFFSET << 2, GR_PARAM_ENABLE); +#endif /* !FX_PACKEDCOLOR */ break; default: assert(0); /* NOTREACHED */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxvb.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxvb.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxvb.c 2004-07-22 08:52:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxvb.c 2004-12-15 02:51:01.000000000 +0100 @@ -55,7 +55,14 @@ GrVertex *dst = fxMesa->verts + edst; GrVertex *src = fxMesa->verts + esrc; +#if FX_PACKEDCOLOR *(GLuint *)&dst->pargb = *(GLuint *)&src->pargb; +#else /* !FX_PACKEDCOLOR */ + *(GLuint *)&dst->r = *(GLuint *)&src->r; + *(GLuint *)&dst->g = *(GLuint *)&src->g; + *(GLuint *)&dst->b = *(GLuint *)&src->b; + *(GLuint *)&dst->a = *(GLuint *)&src->a; +#endif /* !FX_PACKEDCOLOR */ } static void copy_pv2( GLcontext *ctx, GLuint edst, GLuint esrc ) @@ -64,8 +71,18 @@ GrVertex *dst = fxMesa->verts + edst; GrVertex *src = fxMesa->verts + esrc; +#if FX_PACKEDCOLOR *(GLuint *)&dst->pargb = *(GLuint *)&src->pargb; *(GLuint *)&dst->pspec = *(GLuint *)&src->pspec; +#else /* !FX_PACKEDCOLOR */ + *(GLuint *)&dst->r = *(GLuint *)&src->r; + *(GLuint *)&dst->g = *(GLuint *)&src->g; + *(GLuint *)&dst->b = *(GLuint *)&src->b; + *(GLuint *)&dst->a = *(GLuint *)&src->a; + *(GLuint *)&dst->r1 = *(GLuint *)&src->r1; + *(GLuint *)&dst->g1 = *(GLuint *)&src->g1; + *(GLuint *)&dst->b1 = *(GLuint *)&src->b1; +#endif /* !FX_PACKEDCOLOR */ } static struct { @@ -695,10 +712,6 @@ } else { GLuint ind = 0; - /* [dBorca] masked by VERT_BIT_POS ?!? - if (newinputs & VERT_BIT_POINT_SIZE) - ind |= SETUP_PSIZ;*/ - if (newinputs & VERT_BIT_COLOR0) ind |= SETUP_RGBA; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxvbtmp.h x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxvbtmp.h --- xc/extras/Mesa/src/mesa/drivers/glide/fxvbtmp.h 2004-08-13 01:06:37.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxvbtmp.h 2004-12-15 02:51:01.000000000 +0100 @@ -145,6 +145,7 @@ proj = (GLfloat (*)[4])((GLubyte *)proj + proj_stride); } if (IND & SETUP_RGBA) { +#if FX_PACKEDCOLOR UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[2], col[0][0]); UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[1], col[0][1]); UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[0], col[0][2]); @@ -153,12 +154,28 @@ } else { v->pargb[3] = 255; } +#else /* !FX_PACKEDCOLOR */ + CNORM(v->r, col[0][0]); + CNORM(v->g, col[0][1]); + CNORM(v->b, col[0][2]); + if (col_size == 4) { + CNORM(v->a, col[0][3]); + } else { + v->a = 255.0f; + } +#endif /* !FX_PACKEDCOLOR */ STRIDE_4F(col, col_stride); } if (IND & SETUP_SPEC) { +#if FX_PACKEDCOLOR UNCLAMPED_FLOAT_TO_UBYTE(v->pspec[2], spec[0][0]); UNCLAMPED_FLOAT_TO_UBYTE(v->pspec[1], spec[0][1]); UNCLAMPED_FLOAT_TO_UBYTE(v->pspec[0], spec[0][2]); +#else /* !FX_PACKEDCOLOR */ + CNORM(v->r1, spec[0][0]); + CNORM(v->g1, spec[0][1]); + CNORM(v->b1, spec[0][2]); +#endif /* !FX_PACKEDCOLOR */ STRIDE_4F(spec, spec_stride); } if (IND & SETUP_FOGC) { @@ -253,15 +270,28 @@ } +#if FX_PACKEDCOLOR INTERP_UB( t, dst->pargb[0], out->pargb[0], in->pargb[0] ); INTERP_UB( t, dst->pargb[1], out->pargb[1], in->pargb[1] ); INTERP_UB( t, dst->pargb[2], out->pargb[2], in->pargb[2] ); INTERP_UB( t, dst->pargb[3], out->pargb[3], in->pargb[3] ); +#else /* !FX_PACKEDCOLOR */ + INTERP_F( t, dst->r, out->r, in->r ); + INTERP_F( t, dst->g, out->g, in->g ); + INTERP_F( t, dst->b, out->b, in->b ); + INTERP_F( t, dst->a, out->a, in->a ); +#endif /* !FX_PACKEDCOLOR */ if (IND & SETUP_SPEC) { +#if FX_PACKEDCOLOR INTERP_UB( t, dst->pspec[0], out->pspec[0], in->pspec[0] ); INTERP_UB( t, dst->pspec[1], out->pspec[1], in->pspec[1] ); INTERP_UB( t, dst->pspec[2], out->pspec[2], in->pspec[2] ); +#else /* !FX_PACKEDCOLOR */ + INTERP_F( t, dst->r1, out->r1, in->r1 ); + INTERP_F( t, dst->g1, out->g1, in->g1 ); + INTERP_F( t, dst->b1, out->b1, in->b1 ); +#endif /* !FX_PACKEDCOLOR */ } if (IND & SETUP_FOGC) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/glide/fxwgl.c x11r682/xc/extras/Mesa/src/mesa/drivers/glide/fxwgl.c --- xc/extras/Mesa/src/mesa/drivers/glide/fxwgl.c 2004-08-28 06:27:44.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/glide/fxwgl.c 2004-12-15 02:51:01.000000000 +0100 @@ -348,7 +348,7 @@ SetForegroundWindow(hWnd); Sleep(100); /* a hack for win95 */ if (env_check("MESA_GLX_FX", 'w') && !(GetWindowLong (hWnd, GWL_STYLE) & WS_POPUP)) { - /* [dBorca] Hack alert: unfinished business! */ + /* XXX todo - windowed modes */ error = !(ctx = fxMesaCreateContext((GLuint) hWnd, GR_RESOLUTION_NONE, GR_REFRESH_NONE, pix[curPFD - 1].mesaAttr)); } else { GetClientRect(hWnd, &cliRect); @@ -629,7 +629,7 @@ int i; PROC p = (PROC) _glapi_get_proc_address((const char *) lpszProc); - /* [dBorca] we can't do BlendColor */ + /* we can't BlendColor. work around buggy applications */ if (p && strcmp(lpszProc, "glBlendColor") && strcmp(lpszProc, "glBlendColorEXT")) return p; @@ -860,10 +860,7 @@ if (!(pfd.dwFlags & PFD_DOUBLEBUFFER_DONTCARE) && ((pfd.dwFlags & PFD_DOUBLEBUFFER) != (pix[i].pfd.dwFlags & PFD_DOUBLEBUFFER))) continue; -#if 0 /* [dBorca] Hack alert: - * Doom3 fails here! - * Can we get away by implementing WGL_ARB_pixel_format? - */ +#if 1 /* Doom3 fails here! */ if (!(pfd.dwFlags & PFD_STEREO_DONTCARE) && ((pfd.dwFlags & PFD_STEREO) != (pix[i].pfd.dwFlags & PFD_STEREO))) continue; @@ -875,7 +872,7 @@ if (pfd.cAlphaBits > 0 && pix[i].pfd.cAlphaBits == 0) continue; /* need alpha buffer */ -#if 0 /* [dBorca] regression bug? */ +#if 0 /* regression bug? */ if (pfd.cStencilBits > 0 && pix[i].pfd.cStencilBits == 0) continue; /* need stencil buffer */ #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/osmesa/osmesa.c x11r682/xc/extras/Mesa/src/mesa/drivers/osmesa/osmesa.c --- xc/extras/Mesa/src/mesa/drivers/osmesa/osmesa.c 2004-06-16 11:18:50.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/osmesa/osmesa.c 2004-12-15 02:51:01.000000000 +0100 @@ -1273,23 +1273,25 @@ } +typedef void (*OSMESAproc)(void); -struct name_address { +struct name_function +{ const char *Name; - GLvoid *Address; + OSMESAproc Function; }; -static struct name_address functions[] = { - { "OSMesaCreateContext", (void *) OSMesaCreateContext }, - { "OSMesaCreateContextExt", (void *) OSMesaCreateContextExt }, - { "OSMesaDestroyContext", (void *) OSMesaDestroyContext }, - { "OSMesaMakeCurrent", (void *) OSMesaMakeCurrent }, - { "OSMesaGetCurrentContext", (void *) OSMesaGetCurrentContext }, - { "OSMesaPixelsStore", (void *) OSMesaPixelStore }, - { "OSMesaGetIntegerv", (void *) OSMesaGetIntegerv }, - { "OSMesaGetDepthBuffer", (void *) OSMesaGetDepthBuffer }, - { "OSMesaGetColorBuffer", (void *) OSMesaGetColorBuffer }, - { "OSMesaGetProcAddress", (void *) OSMesaGetProcAddress }, +static struct name_function functions[] = { + { "OSMesaCreateContext", (OSMESAproc) OSMesaCreateContext }, + { "OSMesaCreateContextExt", (OSMESAproc) OSMesaCreateContextExt }, + { "OSMesaDestroyContext", (OSMESAproc) OSMesaDestroyContext }, + { "OSMesaMakeCurrent", (OSMESAproc) OSMesaMakeCurrent }, + { "OSMesaGetCurrentContext", (OSMESAproc) OSMesaGetCurrentContext }, + { "OSMesaPixelsStore", (OSMESAproc) OSMesaPixelStore }, + { "OSMesaGetIntegerv", (OSMESAproc) OSMesaGetIntegerv }, + { "OSMesaGetDepthBuffer", (OSMESAproc) OSMesaGetDepthBuffer }, + { "OSMesaGetColorBuffer", (OSMESAproc) OSMesaGetColorBuffer }, + { "OSMesaGetProcAddress", (OSMESAproc) OSMesaGetProcAddress }, { NULL, NULL } }; @@ -1299,7 +1301,7 @@ int i; for (i = 0; functions[i].Name; i++) { if (_mesa_strcmp(functions[i].Name, funcName) == 0) - return (void *) functions[i].Address; + return (void *) functions[i].Function; } return (void *) _glapi_get_proc_address(funcName); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/windows/gdi/colors.h x11r682/xc/extras/Mesa/src/mesa/drivers/windows/gdi/colors.h --- xc/extras/Mesa/src/mesa/drivers/windows/gdi/colors.h 2004-06-16 11:18:50.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/windows/gdi/colors.h 2004-12-15 02:51:01.000000000 +0100 @@ -24,6 +24,9 @@ /* * $Log: colors.h,v $ + * Revision 1.2 2004/08/25 15:59:48 brianp + * Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch 1015696) + * * Revision 1.1 2003/07/24 03:47:46 kschultz * Source code for GDI driver. * @@ -49,6 +52,9 @@ /* * $Log: colors.h,v $ + * Revision 1.2 2004/08/25 15:59:48 brianp + * Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch 1015696) + * * Revision 1.1 2003/07/24 03:47:46 kschultz * Source code for GDI driver. * @@ -74,6 +80,9 @@ /* * $Log: colors.h,v $ + * Revision 1.2 2004/08/25 15:59:48 brianp + * Silence gcc 3.4 warnings on ReactOS. Mostly unused var warnings. (patch 1015696) + * * Revision 1.1 2003/07/24 03:47:46 kschultz * Source code for GDI driver. * @@ -141,7 +150,7 @@ 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))) +#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 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wgl.c x11r682/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wgl.c --- xc/extras/Mesa/src/mesa/drivers/windows/gdi/wgl.c 2004-06-16 11:18:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/windows/gdi/wgl.c 2004-12-15 02:51:01.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id: wgl.c,v 1.3 2004/01/07 12:34:28 dborca Exp $ */ +/* $Id: wgl.c,v 1.6 2004/08/30 08:37:57 dborca Exp $ */ /* * This library is free software; you can redistribute it and/or @@ -102,11 +102,12 @@ static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT]; static unsigned ctx_count = 0; -static unsigned ctx_current = -1; +static int ctx_current = -1; static unsigned curPFD = 0; WGLAPI BOOL GLAPIENTRY wglCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask) { + (void) hglrcSrc; (void) hglrcDst; (void) mask; return(FALSE); } @@ -166,6 +167,7 @@ WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC hdc,int iLayerPlane) { + (void) hdc; (void) iLayerPlane; SetLastError(0); return(NULL); } @@ -212,6 +214,7 @@ WGLAPI BOOL GLAPIENTRY wglShareLists(HGLRC hglrc1,HGLRC hglrc2) { + (void) hglrc1; (void) hglrc2; return(TRUE); } @@ -219,7 +222,7 @@ static FIXED FixedFromDouble(double d) { long l = (long) (d * 65536L); - return *(FIXED *)&l; + return *(FIXED *) (void *) &l; } @@ -258,9 +261,9 @@ SetTextColor(bitDevice, tempColor); // Place chars based on base line - VERIFY(SetTextAlign(bitDevice, TA_BASELINE) >= 0 ? 1 : 0); + VERIFY(SetTextAlign(bitDevice, TA_BASELINE) != GDI_ERROR ? 1 : 0); - for(i = 0; i < numChars; i++) { + for(i = 0; i < (int)numChars; i++) { SIZE size; char curChar; int charWidth,charHeight,bmapWidth,bmapHeight,numBytes,res; @@ -285,7 +288,7 @@ // Assign the output bitmap to the device origBmap = SelectObject(bitDevice, bitObject); - VERIFY(origBmap); + (void) VERIFY(origBmap); VERIFY( PatBlt( bitDevice, 0, 0, bmapWidth, bmapHeight,BLACKNESS ) ); @@ -344,11 +347,7 @@ MAT2 mat; int success = TRUE; - if (first<0) - return FALSE; - if (count<0) - return FALSE; - if (listBase<0) + if (count == 0) return FALSE; font_list = listBase; @@ -373,7 +372,7 @@ /* ** Otherwise process all desired characters. */ - for (i = 0; i < count; i++) + for (i = 0; i < (int)count; i++) { DWORD err; @@ -432,6 +431,7 @@ WGLAPI BOOL GLAPIENTRY wglUseFontBitmapsW(HDC hdc,DWORD first,DWORD count,DWORD listBase) { + (void) hdc; (void) first; (void) count; (void) listBase; return FALSE; } @@ -440,6 +440,9 @@ FLOAT extrusion,int format, LPGLYPHMETRICSFLOAT lpgmf) { + (void) hdc; (void) first; (void) count; + (void) listBase; (void) deviation; (void) extrusion; (void) format; + (void) lpgmf; SetLastError(0); return(FALSE); } @@ -449,6 +452,9 @@ FLOAT extrusion,int format, LPGLYPHMETRICSFLOAT lpgmf) { + (void) hdc; (void) first; (void) count; + (void) listBase; (void) deviation; (void) extrusion; (void) format; + (void) lpgmf; SetLastError(0); return(FALSE); } @@ -457,6 +463,7 @@ int iLayerPlane,UINT nBytes, LPLAYERPLANEDESCRIPTOR plpd) { + (void) hdc; (void) iPixelFormat; (void) iLayerPlane; (void) nBytes; (void) plpd; SetLastError(0); return(FALSE); } @@ -465,6 +472,7 @@ int iStart,int cEntries, CONST COLORREF *pcr) { + (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr; SetLastError(0); return(0); } @@ -473,18 +481,21 @@ int iStart,int cEntries, COLORREF *pcr) { + (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr; SetLastError(0); return(0); } WGLAPI BOOL GLAPIENTRY wglRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize) { + (void) hdc; (void) iLayerPlane; (void) bRealize; SetLastError(0); return(FALSE); } WGLAPI BOOL GLAPIENTRY wglSwapLayerBuffers(HDC hdc,UINT fuPlanes) { + (void) fuPlanes; if( !hdc ) { WMesaSwapBuffers(); @@ -498,6 +509,7 @@ CONST PIXELFORMATDESCRIPTOR *ppfd) { int i,best = -1,bestdelta = 0x7FFFFFFF,delta,qt_valid_pix; + (void) hdc; qt_valid_pix = qt_pix; if(ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR) || ppfd->nVersion != 1) @@ -556,6 +568,7 @@ LPPIXELFORMATDESCRIPTOR ppfd) { int qt_valid_pix; + (void) hdc; qt_valid_pix = qt_pix; if(ppfd == NULL) @@ -584,6 +597,7 @@ WGLAPI int GLAPIENTRY wglGetPixelFormat(HDC hdc) { + (void) hdc; if(curPFD == 0) { SetLastError(0); @@ -596,6 +610,7 @@ PIXELFORMATDESCRIPTOR *ppfd) { int qt_valid_pix; + (void) hdc; qt_valid_pix = qt_pix; if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR)) @@ -609,6 +624,7 @@ WGLAPI BOOL GLAPIENTRY wglSwapBuffers(HDC hdc) { + (void) hdc; if (ctx_current < 0) return FALSE; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesa.c x11r682/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesa.c --- xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesa.c 2004-07-22 08:52:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesa.c 2004-12-15 02:51:01.000000000 +0100 @@ -45,6 +45,7 @@ #include "array_cache/acache.h" #include "swrast/swrast.h" #include "swrast_setup/swrast_setup.h" +#include "swrast/s_alphabuf.h" #include "swrast/s_context.h" #include "swrast/s_depth.h" #include "swrast/s_lines.h" @@ -165,7 +166,6 @@ #define USE_GDI_TO_CLEAR 1 #endif -static void FlushToFile(PWMC pwc, PSTR szFile); BOOL wmCreateBackingStore(PWMC pwc, long lxSize, long lySize); BOOL wmDeleteBackingStore(PWMC pwc); void wmCreatePalette( PWMC pwdc ); @@ -347,15 +347,20 @@ BYTE DITHER_RGB_2_8BIT( int r, int g, int b, int x, int y); +#if 0 /* unused */ + /* Finish all pending operations and synchronize. */ static void finish(GLcontext* ctx) { /* No op */ + (void) ctx; } +#endif /* unused */ static void flush(GLcontext* ctx) { + (void) ctx; if((Current->rgb_flag &&!(Current->db_flag)) ||(!Current->rgb_flag)) { @@ -371,6 +376,7 @@ */ static void clear_index(GLcontext* ctx, GLuint index) { + (void) ctx; Current->clearpixel = index; } @@ -382,6 +388,7 @@ static void clear_color( GLcontext* ctx, const GLfloat color[4] ) { GLubyte col[4]; + (void) ctx; CLAMPED_FLOAT_TO_UBYTE(col[0], color[0]); CLAMPED_FLOAT_TO_UBYTE(col[1], color[1]); CLAMPED_FLOAT_TO_UBYTE(col[2], color[2]); @@ -400,7 +407,7 @@ * Otherwise, we let swrast do it. */ -static clear(GLcontext* ctx, GLbitfield mask, +static void clear(GLcontext* ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height) { const GLuint *colorMask = (GLuint *) &ctx->Color.ColorMask; @@ -467,7 +474,7 @@ WORD wColor; BYTE bColor; LPDWORD lpdw = (LPDWORD)Current->pbPixels; - LPWORD lpw = (LPWORD)Current->pbPixels; + /*LPWORD lpw = (LPWORD)Current->pbPixels; */ LPBYTE lpb = Current->pbPixels; int lines; /* Double-buffering - clear back buffer */ @@ -513,7 +520,9 @@ dwColor = BGR32(GetRValue(Current->clearpixel), GetGValue(Current->clearpixel), GetBValue(Current->clearpixel)); - } + } + else + dwColor = 0; if (nBypp != 3) { @@ -567,6 +576,7 @@ static void enable( GLcontext* ctx, GLenum pname, GLboolean enable ) { + (void) ctx; if (!Current) return; @@ -592,6 +602,7 @@ static void set_buffer(GLcontext *ctx, GLframebuffer *colorBuffer, GLuint bufferBit ) { + (void) ctx; (void) colorBuffer; (void) bufferBit; /* XXX todo - examine bufferBit and set read/write pointers */ return; } @@ -601,9 +612,10 @@ /* Return characteristics of the output buffer. */ static void buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height ) { - GET_CURRENT_CONTEXT(ctx); + /*GET_CURRENT_CONTEXT(ctx);*/ int New_Size; RECT CR; + (void) buffer; GetClientRect(Current->Window,&CR); @@ -649,25 +661,36 @@ /* Accelerated routines are not implemented in 4.0. See OSMesa for ideas. */ +#if 0 /* unused */ + static void fast_rgb_points( GLcontext* ctx, GLuint first, GLuint last ) { + (void) ctx; (void) first; (void) last; } +#endif /* unused */ + /* Return pointer to accelerated points function */ extern tnl_points_func choose_points_function( GLcontext* ctx ) { + (void) ctx; return NULL; } +#if 0 /* unused */ + static void fast_flat_rgb_line( GLcontext* ctx, GLuint v0, GLuint v1, GLuint pv ) { + (void) ctx; (void) v0; (void) v1; (void) pv; } static tnl_line_func choose_line_function( GLcontext* ctx ) { + (void) ctx; } +#endif /* unused */ /**********************************************************************/ /***** Span-based pixel drawing *****/ @@ -682,6 +705,7 @@ { GLuint i; PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x; + (void) ctx; assert(Current->rgb_flag==GL_FALSE); for (i=0; iScreenMem+FLIP(y)*Current->ScanWidth+x; + (void) ctx; assert(Current->rgb_flag==GL_FALSE); for (i=0; iScreenMem+FLIP(y)*Current->ScanWidth+x; + (void) ctx; assert(Current->rgb_flag==GL_FALSE); for (i=0; irgb_flag==GL_TRUE) { GLuint i; - HDC DC=DD_GETDC; + /*HDC DC=DD_GETDC;*/ y=FLIP(y); if (mask) { for (i=0; irgb_flag==GL_TRUE) { GLuint i; - HDC DC=DD_GETDC; + /*HDC DC=DD_GETDC;*/ y=FLIP(y); if (mask) { for (i=0; irgb_flag==GL_TRUE); y=FLIP(y); if(Current->rgb_flag==GL_TRUE) @@ -863,6 +892,7 @@ const GLuint index[], const GLubyte mask[] ) { GLuint i; + (void) ctx; assert(Current->rgb_flag==GL_FALSE); for (i=0; irgb_flag==GL_FALSE); for (i=0; irgb_flag==GL_TRUE); for (i=0; irgb_flag==GL_TRUE); for (i=0; iScreenMem+FLIP(y)*Current->ScanWidth+x; + (void) ctx; assert(Current->rgb_flag==GL_FALSE); for (i=0; irgb_flag==GL_FALSE); for (i=0; irgb_flag==GL_TRUE); y = Current->height - y - 1; for (i=0; irgb_flag==GL_TRUE); for (i=0; ihDC; +/* HDC DC = Current->hDC;*/ GET_CURRENT_CONTEXT(ctx); /* If we're swapping the buffer associated with the current context @@ -1699,6 +1737,8 @@ DWORD dwScanWidth; UINT nBypp = pwc->cColorBits / 8; HDC hic; + (void) hDC; + (void) pbmi; dwScanWidth = (((pwc->ScanWidth * nBypp)+ 3) & ~3); @@ -1742,14 +1782,14 @@ pwc->hbmDIB = CreateDIBSection(hic, &(pwc->bmi), (iUsage ? DIB_PAL_COLORS : DIB_RGB_COLORS), - &(pwc->pbPixels), + (void **)&(pwc->pbPixels), pwc->dib.hFileMap, 0); #else pwc->hbmDIB = CreateDIBSection(hic, &(pwc->bmi), (iUsage ? DIB_PAL_COLORS : DIB_RGB_COLORS), - &(pwc->pbPixels), + (void **)&(pwc->pbPixels), 0, 0); #endif // USE_MAPPED_FILE @@ -1768,7 +1808,7 @@ BOOL wmFlush(PWMC pwc) { BOOL bRet = 0; - DWORD dwErr = 0; +/* DWORD dwErr = 0;*/ #ifdef DDRAW HRESULT ddrval; #endif @@ -3182,8 +3222,11 @@ #endif /************** END DEAD TRIANGLE CODE ***********************/ +#if 0 /* unused */ + static tnl_triangle_func choose_triangle_function( GLcontext *ctx ) { + (void) ctx; #if 0 WMesaContext wmesa = (WMesaContext) ctx->DriverCtx; int depth = wmesa->cColorBits; @@ -3277,6 +3320,8 @@ #endif } +#endif /* unused */ + /* * Define a new viewport and reallocate auxillary buffers if the size of * the window (color buffer) has changed. @@ -3284,6 +3329,7 @@ void WMesaViewport( GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height ) { + (void) ctx; (void) x; (void) y; (void) width; (void) height; assert(0); /* I don't think that this is being used. */ #if 0 /* Save viewport */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesadef.h x11r682/xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesadef.h --- xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesadef.h 2004-06-16 11:18:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/windows/gdi/wmesadef.h 2004-12-15 02:51:01.000000000 +0100 @@ -93,6 +93,7 @@ }WMDIBSECTION, *PWMDIBSECTION; #ifdef COMPILE_SETPIXEL +struct wmesa_context; typedef void (*SETPIXELTYPE)(struct wmesa_context *pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b); #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/x11/fakeglx.c x11r682/xc/extras/Mesa/src/mesa/drivers/x11/fakeglx.c --- xc/extras/Mesa/src/mesa/drivers/x11/fakeglx.c 2004-08-13 01:06:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/x11/fakeglx.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -80,10 +80,6 @@ "GLX_SGI_video_sync " \ "GLX_SGIX_fbconfig " \ "GLX_SGIX_pbuffer " -/* - "GLX_ARB_render_texture" -*/ - /* * Our fake GLX context will contain a "real" GLX context and an XMesa context. @@ -144,7 +140,8 @@ /* * Test if the given XVisualInfo is usable for Mesa rendering. */ -static GLboolean is_usable_visual( XVisualInfo *vinfo ) +static GLboolean +is_usable_visual( XVisualInfo *vinfo ) { switch (vinfo->CLASS) { case StaticGray: @@ -181,7 +178,8 @@ * >0 = overlay planes * <0 = underlay planes */ -static int level_of_visual( Display *dpy, XVisualInfo *vinfo ) +static int +level_of_visual( Display *dpy, XVisualInfo *vinfo ) { Atom overlayVisualsAtom; OverlayInfo *overlay_info = NULL; @@ -332,7 +330,9 @@ /* add xmvis to the list */ VisualTable[NumVisuals] = xmvis; NumVisuals++; - /* XXX minor hack */ + /* XXX minor hack, because XMesaCreateVisual doesn't support an + * aux buffers parameter. + */ xmvis->mesa_visual.numAuxBuffers = numAuxBuffers; } return xmvis; @@ -467,7 +467,8 @@ * Input: glxvis - the glx_visual * Return: a pixel value or -1 if no transparent pixel */ -static int transparent_pixel( XMesaVisual glxvis ) +static int +transparent_pixel( XMesaVisual glxvis ) { Display *dpy = glxvis->display; XVisualInfo *vinfo = glxvis->visinfo; @@ -532,8 +533,8 @@ /* * Try to get an X visual which matches the given arguments. */ -static XVisualInfo *get_visual( Display *dpy, int scr, - unsigned int depth, int xclass ) +static XVisualInfo * +get_visual( Display *dpy, int scr, unsigned int depth, int xclass ) { XVisualInfo temp, *vis; long mask; @@ -586,7 +587,8 @@ * varname - the name of the environment variable * Return: an XVisualInfo pointer to NULL if error. */ -static XVisualInfo *get_env_visual(Display *dpy, int scr, const char *varname) +static XVisualInfo * +get_env_visual(Display *dpy, int scr, const char *varname) { char value[100], type[100]; int depth, xclass = -1; @@ -631,9 +633,9 @@ * preferred_class - preferred GLX visual class or DONT_CARE * Return: pointer to an XVisualInfo or NULL. */ -static XVisualInfo *choose_x_visual( Display *dpy, int screen, - GLboolean rgba, int min_depth, - int preferred_class ) +static XVisualInfo * +choose_x_visual( Display *dpy, int screen, GLboolean rgba, int min_depth, + int preferred_class ) { XVisualInfo *vis; int xclass, visclass = 0; @@ -801,12 +803,10 @@ * preferred_class - preferred GLX visual class or DONT_CARE * Return: pointer to an XVisualInfo or NULL. */ -static XVisualInfo *choose_x_overlay_visual( Display *dpy, int scr, - GLboolean rgbFlag, - int level, int trans_type, - int trans_value, - int min_depth, - int preferred_class ) +static XVisualInfo * +choose_x_overlay_visual( Display *dpy, int scr, GLboolean rgbFlag, + int level, int trans_type, int trans_value, + int min_depth, int preferred_class ) { Atom overlayVisualsAtom; OverlayInfo *overlay_info; @@ -931,8 +931,9 @@ /**********************************************************************/ -static XMesaVisual choose_visual( Display *dpy, int screen, const int *list, - GLboolean rgbModeDefault ) +static XMesaVisual +choose_visual( Display *dpy, int screen, const int *list, + GLboolean rgbModeDefault ) { const int *parselist; XVisualInfo *vis; @@ -1392,7 +1393,6 @@ } - static Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx ) { @@ -1400,7 +1400,6 @@ } - static GLXPixmap Fake_glXCreateGLXPixmap( Display *dpy, XVisualInfo *visinfo, Pixmap pixmap ) { @@ -1463,7 +1462,6 @@ } - static void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, unsigned long mask ) @@ -1477,7 +1475,6 @@ } - static Bool Fake_glXQueryExtension( Display *dpy, int *errorb, int *event ) { @@ -1512,7 +1509,6 @@ } - static Bool Fake_glXIsDirect( Display *dpy, GLXContext ctx ) { @@ -1554,7 +1550,6 @@ } - static Bool Fake_glXQueryVersion( Display *dpy, int *maj, int *min ) { @@ -1567,7 +1562,6 @@ } - /* * Query the GLX attributes of the given XVisualInfo. */ @@ -2738,9 +2732,19 @@ } - +/* silence warning */ extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void); -struct _glxapi_table *_mesa_GetGLXDispatchTable(void) + + +/** + * Create a new GLX API dispatch table with its function pointers + * initialized to point to Mesa's "fake" GLX API functions. + * Note: there's a similar function (_real_GetGLXDispatchTable) that + * returns a new dispatch table with all pointers initalized to point + * to "real" GLX functions (which understand GLX wire protocol, etc). + */ +struct _glxapi_table * +_mesa_GetGLXDispatchTable(void) { static struct _glxapi_table glx; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/x11/glxapi.c x11r682/xc/extras/Mesa/src/mesa/drivers/x11/glxapi.c --- xc/extras/Mesa/src/mesa/drivers/x11/glxapi.c 2004-06-16 11:19:00.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/x11/glxapi.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.2.1 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * 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"), @@ -1141,160 +1140,161 @@ void _glxapi_set_no_op_table(struct _glxapi_table *t) { + typedef int (*nop_func)(void); + nop_func *dispatch = (nop_func *) t; GLuint n = _glxapi_get_dispatch_table_size(); GLuint i; - void **dispatch = (void **) t; for (i = 0; i < n; i++) { - dispatch[i] = (void *) generic_no_op_func; + dispatch[i] = generic_no_op_func; } } struct name_address_pair { const char *Name; - GLvoid *Address; + __GLXextFuncPtr Address; }; static struct name_address_pair GLX_functions[] = { /*** GLX_VERSION_1_0 ***/ - { "glXChooseVisual", (GLvoid *) glXChooseVisual }, - { "glXCopyContext", (GLvoid *) glXCopyContext }, - { "glXCreateContext", (GLvoid *) glXCreateContext }, - { "glXCreateGLXPixmap", (GLvoid *) glXCreateGLXPixmap }, - { "glXDestroyContext", (GLvoid *) glXDestroyContext }, - { "glXDestroyGLXPixmap", (GLvoid *) glXDestroyGLXPixmap }, - { "glXGetConfig", (GLvoid *) glXGetConfig }, - { "glXGetCurrentContext", (GLvoid *) glXGetCurrentContext }, - { "glXGetCurrentDrawable", (GLvoid *) glXGetCurrentDrawable }, - { "glXIsDirect", (GLvoid *) glXIsDirect }, - { "glXMakeCurrent", (GLvoid *) glXMakeCurrent }, - { "glXQueryExtension", (GLvoid *) glXQueryExtension }, - { "glXQueryVersion", (GLvoid *) glXQueryVersion }, - { "glXSwapBuffers", (GLvoid *) glXSwapBuffers }, - { "glXUseXFont", (GLvoid *) glXUseXFont }, - { "glXWaitGL", (GLvoid *) glXWaitGL }, - { "glXWaitX", (GLvoid *) glXWaitX }, + { "glXChooseVisual", (__GLXextFuncPtr) glXChooseVisual }, + { "glXCopyContext", (__GLXextFuncPtr) glXCopyContext }, + { "glXCreateContext", (__GLXextFuncPtr) glXCreateContext }, + { "glXCreateGLXPixmap", (__GLXextFuncPtr) glXCreateGLXPixmap }, + { "glXDestroyContext", (__GLXextFuncPtr) glXDestroyContext }, + { "glXDestroyGLXPixmap", (__GLXextFuncPtr) glXDestroyGLXPixmap }, + { "glXGetConfig", (__GLXextFuncPtr) glXGetConfig }, + { "glXGetCurrentContext", (__GLXextFuncPtr) glXGetCurrentContext }, + { "glXGetCurrentDrawable", (__GLXextFuncPtr) glXGetCurrentDrawable }, + { "glXIsDirect", (__GLXextFuncPtr) glXIsDirect }, + { "glXMakeCurrent", (__GLXextFuncPtr) glXMakeCurrent }, + { "glXQueryExtension", (__GLXextFuncPtr) glXQueryExtension }, + { "glXQueryVersion", (__GLXextFuncPtr) glXQueryVersion }, + { "glXSwapBuffers", (__GLXextFuncPtr) glXSwapBuffers }, + { "glXUseXFont", (__GLXextFuncPtr) glXUseXFont }, + { "glXWaitGL", (__GLXextFuncPtr) glXWaitGL }, + { "glXWaitX", (__GLXextFuncPtr) glXWaitX }, /*** GLX_VERSION_1_1 ***/ - { "glXGetClientString", (GLvoid *) glXGetClientString }, - { "glXQueryExtensionsString", (GLvoid *) glXQueryExtensionsString }, - { "glXQueryServerString", (GLvoid *) glXQueryServerString }, + { "glXGetClientString", (__GLXextFuncPtr) glXGetClientString }, + { "glXQueryExtensionsString", (__GLXextFuncPtr) glXQueryExtensionsString }, + { "glXQueryServerString", (__GLXextFuncPtr) glXQueryServerString }, /*** GLX_VERSION_1_2 ***/ - { "glXGetCurrentDisplay", (GLvoid *) glXGetCurrentDisplay }, + { "glXGetCurrentDisplay", (__GLXextFuncPtr) glXGetCurrentDisplay }, /*** GLX_VERSION_1_3 ***/ - { "glXChooseFBConfig", (GLvoid *) glXChooseFBConfig }, - { "glXCreateNewContext", (GLvoid *) glXCreateNewContext }, - { "glXCreatePbuffer", (GLvoid *) glXCreatePbuffer }, - { "glXCreatePixmap", (GLvoid *) glXCreatePixmap }, - { "glXCreateWindow", (GLvoid *) glXCreateWindow }, - { "glXDestroyPbuffer", (GLvoid *) glXDestroyPbuffer }, - { "glXDestroyPixmap", (GLvoid *) glXDestroyPixmap }, - { "glXDestroyWindow", (GLvoid *) glXDestroyWindow }, - { "glXGetCurrentReadDrawable", (GLvoid *) glXGetCurrentReadDrawable }, - { "glXGetFBConfigAttrib", (GLvoid *) glXGetFBConfigAttrib }, - { "glXGetFBConfigs", (GLvoid *) glXGetFBConfigs }, - { "glXGetSelectedEvent", (GLvoid *) glXGetSelectedEvent }, - { "glXGetVisualFromFBConfig", (GLvoid *) glXGetVisualFromFBConfig }, - { "glXMakeContextCurrent", (GLvoid *) glXMakeContextCurrent }, - { "glXQueryContext", (GLvoid *) glXQueryContext }, - { "glXQueryDrawable", (GLvoid *) glXQueryDrawable }, - { "glXSelectEvent", (GLvoid *) glXSelectEvent }, + { "glXChooseFBConfig", (__GLXextFuncPtr) glXChooseFBConfig }, + { "glXCreateNewContext", (__GLXextFuncPtr) glXCreateNewContext }, + { "glXCreatePbuffer", (__GLXextFuncPtr) glXCreatePbuffer }, + { "glXCreatePixmap", (__GLXextFuncPtr) glXCreatePixmap }, + { "glXCreateWindow", (__GLXextFuncPtr) glXCreateWindow }, + { "glXDestroyPbuffer", (__GLXextFuncPtr) glXDestroyPbuffer }, + { "glXDestroyPixmap", (__GLXextFuncPtr) glXDestroyPixmap }, + { "glXDestroyWindow", (__GLXextFuncPtr) glXDestroyWindow }, + { "glXGetCurrentReadDrawable", (__GLXextFuncPtr) glXGetCurrentReadDrawable }, + { "glXGetFBConfigAttrib", (__GLXextFuncPtr) glXGetFBConfigAttrib }, + { "glXGetFBConfigs", (__GLXextFuncPtr) glXGetFBConfigs }, + { "glXGetSelectedEvent", (__GLXextFuncPtr) glXGetSelectedEvent }, + { "glXGetVisualFromFBConfig", (__GLXextFuncPtr) glXGetVisualFromFBConfig }, + { "glXMakeContextCurrent", (__GLXextFuncPtr) glXMakeContextCurrent }, + { "glXQueryContext", (__GLXextFuncPtr) glXQueryContext }, + { "glXQueryDrawable", (__GLXextFuncPtr) glXQueryDrawable }, + { "glXSelectEvent", (__GLXextFuncPtr) glXSelectEvent }, /*** GLX_VERSION_1_4 ***/ - { "glXGetProcAddress", (GLvoid *) glXGetProcAddress }, + { "glXGetProcAddress", (__GLXextFuncPtr) glXGetProcAddress }, /*** GLX_SGI_swap_control ***/ - { "glXSwapIntervalSGI", (GLvoid *) glXSwapIntervalSGI }, + { "glXSwapIntervalSGI", (__GLXextFuncPtr) glXSwapIntervalSGI }, /*** GLX_SGI_video_sync ***/ - { "glXGetVideoSyncSGI", (GLvoid *) glXGetVideoSyncSGI }, - { "glXWaitVideoSyncSGI", (GLvoid *) glXWaitVideoSyncSGI }, + { "glXGetVideoSyncSGI", (__GLXextFuncPtr) glXGetVideoSyncSGI }, + { "glXWaitVideoSyncSGI", (__GLXextFuncPtr) glXWaitVideoSyncSGI }, /*** GLX_SGI_make_current_read ***/ - { "glXMakeCurrentReadSGI", (GLvoid *) glXMakeCurrentReadSGI }, - { "glXGetCurrentReadDrawableSGI", (GLvoid *) glXGetCurrentReadDrawableSGI }, + { "glXMakeCurrentReadSGI", (__GLXextFuncPtr) glXMakeCurrentReadSGI }, + { "glXGetCurrentReadDrawableSGI", (__GLXextFuncPtr) glXGetCurrentReadDrawableSGI }, /*** GLX_SGIX_video_source ***/ #if defined(_VL_H) - { "glXCreateGLXVideoSourceSGIX", (GLvoid *) glXCreateGLXVideoSourceSGIX }, - { "glXDestroyGLXVideoSourceSGIX", (GLvoid *) glXDestroyGLXVideoSourceSGIX }, + { "glXCreateGLXVideoSourceSGIX", (__GLXextFuncPtr) glXCreateGLXVideoSourceSGIX }, + { "glXDestroyGLXVideoSourceSGIX", (__GLXextFuncPtr) glXDestroyGLXVideoSourceSGIX }, #endif /*** GLX_EXT_import_context ***/ - { "glXFreeContextEXT", (GLvoid *) glXFreeContextEXT }, - { "glXGetContextIDEXT", (GLvoid *) glXGetContextIDEXT }, - { "glXGetCurrentDisplayEXT", (GLvoid *) glXGetCurrentDisplayEXT }, - { "glXImportContextEXT", (GLvoid *) glXImportContextEXT }, - { "glXQueryContextInfoEXT", (GLvoid *) glXQueryContextInfoEXT }, + { "glXFreeContextEXT", (__GLXextFuncPtr) glXFreeContextEXT }, + { "glXGetContextIDEXT", (__GLXextFuncPtr) glXGetContextIDEXT }, + { "glXGetCurrentDisplayEXT", (__GLXextFuncPtr) glXGetCurrentDisplayEXT }, + { "glXImportContextEXT", (__GLXextFuncPtr) glXImportContextEXT }, + { "glXQueryContextInfoEXT", (__GLXextFuncPtr) glXQueryContextInfoEXT }, /*** GLX_SGIX_fbconfig ***/ - { "glXGetFBConfigAttribSGIX", (GLvoid *) glXGetFBConfigAttribSGIX }, - { "glXChooseFBConfigSGIX", (GLvoid *) glXChooseFBConfigSGIX }, - { "glXCreateGLXPixmapWithConfigSGIX", (GLvoid *) glXCreateGLXPixmapWithConfigSGIX }, - { "glXCreateContextWithConfigSGIX", (GLvoid *) glXCreateContextWithConfigSGIX }, - { "glXGetVisualFromFBConfigSGIX", (GLvoid *) glXGetVisualFromFBConfigSGIX }, - { "glXGetFBConfigFromVisualSGIX", (GLvoid *) glXGetFBConfigFromVisualSGIX }, + { "glXGetFBConfigAttribSGIX", (__GLXextFuncPtr) glXGetFBConfigAttribSGIX }, + { "glXChooseFBConfigSGIX", (__GLXextFuncPtr) glXChooseFBConfigSGIX }, + { "glXCreateGLXPixmapWithConfigSGIX", (__GLXextFuncPtr) glXCreateGLXPixmapWithConfigSGIX }, + { "glXCreateContextWithConfigSGIX", (__GLXextFuncPtr) glXCreateContextWithConfigSGIX }, + { "glXGetVisualFromFBConfigSGIX", (__GLXextFuncPtr) glXGetVisualFromFBConfigSGIX }, + { "glXGetFBConfigFromVisualSGIX", (__GLXextFuncPtr) glXGetFBConfigFromVisualSGIX }, /*** GLX_SGIX_pbuffer ***/ - { "glXCreateGLXPbufferSGIX", (GLvoid *) glXCreateGLXPbufferSGIX }, - { "glXDestroyGLXPbufferSGIX", (GLvoid *) glXDestroyGLXPbufferSGIX }, - { "glXQueryGLXPbufferSGIX", (GLvoid *) glXQueryGLXPbufferSGIX }, - { "glXSelectEventSGIX", (GLvoid *) glXSelectEventSGIX }, - { "glXGetSelectedEventSGIX", (GLvoid *) glXGetSelectedEventSGIX }, + { "glXCreateGLXPbufferSGIX", (__GLXextFuncPtr) glXCreateGLXPbufferSGIX }, + { "glXDestroyGLXPbufferSGIX", (__GLXextFuncPtr) glXDestroyGLXPbufferSGIX }, + { "glXQueryGLXPbufferSGIX", (__GLXextFuncPtr) glXQueryGLXPbufferSGIX }, + { "glXSelectEventSGIX", (__GLXextFuncPtr) glXSelectEventSGIX }, + { "glXGetSelectedEventSGIX", (__GLXextFuncPtr) glXGetSelectedEventSGIX }, /*** GLX_SGI_cushion ***/ - { "glXCushionSGI", (GLvoid *) glXCushionSGI }, + { "glXCushionSGI", (__GLXextFuncPtr) glXCushionSGI }, /*** GLX_SGIX_video_resize ***/ - { "glXBindChannelToWindowSGIX", (GLvoid *) glXBindChannelToWindowSGIX }, - { "glXChannelRectSGIX", (GLvoid *) glXChannelRectSGIX }, - { "glXQueryChannelRectSGIX", (GLvoid *) glXQueryChannelRectSGIX }, - { "glXQueryChannelDeltasSGIX", (GLvoid *) glXQueryChannelDeltasSGIX }, - { "glXChannelRectSyncSGIX", (GLvoid *) glXChannelRectSyncSGIX }, + { "glXBindChannelToWindowSGIX", (__GLXextFuncPtr) glXBindChannelToWindowSGIX }, + { "glXChannelRectSGIX", (__GLXextFuncPtr) glXChannelRectSGIX }, + { "glXQueryChannelRectSGIX", (__GLXextFuncPtr) glXQueryChannelRectSGIX }, + { "glXQueryChannelDeltasSGIX", (__GLXextFuncPtr) glXQueryChannelDeltasSGIX }, + { "glXChannelRectSyncSGIX", (__GLXextFuncPtr) glXChannelRectSyncSGIX }, /*** GLX_SGIX_dmbuffer **/ #if defined(_DM_BUFFER_H_) - { "glXAssociateDMPbufferSGIX", (GLvoid *) glXAssociateDMPbufferSGIX }, + { "glXAssociateDMPbufferSGIX", (__GLXextFuncPtr) glXAssociateDMPbufferSGIX }, #endif /*** GLX_SGIX_swap_group ***/ - { "glXJoinSwapGroupSGIX", (GLvoid *) glXJoinSwapGroupSGIX }, + { "glXJoinSwapGroupSGIX", (__GLXextFuncPtr) glXJoinSwapGroupSGIX }, /*** GLX_SGIX_swap_barrier ***/ - { "glXBindSwapBarrierSGIX", (GLvoid *) glXBindSwapBarrierSGIX }, - { "glXQueryMaxSwapBarriersSGIX", (GLvoid *) glXQueryMaxSwapBarriersSGIX }, + { "glXBindSwapBarrierSGIX", (__GLXextFuncPtr) glXBindSwapBarrierSGIX }, + { "glXQueryMaxSwapBarriersSGIX", (__GLXextFuncPtr) glXQueryMaxSwapBarriersSGIX }, /*** GLX_SUN_get_transparent_index ***/ - { "glXGetTransparentIndexSUN", (GLvoid *) glXGetTransparentIndexSUN }, + { "glXGetTransparentIndexSUN", (__GLXextFuncPtr) glXGetTransparentIndexSUN }, /*** GLX_MESA_copy_sub_buffer ***/ - { "glXCopySubBufferMESA", (GLvoid *) glXCopySubBufferMESA }, + { "glXCopySubBufferMESA", (__GLXextFuncPtr) glXCopySubBufferMESA }, /*** GLX_MESA_pixmap_colormap ***/ - { "glXCreateGLXPixmapMESA", (GLvoid *) glXCreateGLXPixmapMESA }, + { "glXCreateGLXPixmapMESA", (__GLXextFuncPtr) glXCreateGLXPixmapMESA }, /*** GLX_MESA_release_buffers ***/ - { "glXReleaseBuffersMESA", (GLvoid *) glXReleaseBuffersMESA }, + { "glXReleaseBuffersMESA", (__GLXextFuncPtr) glXReleaseBuffersMESA }, /*** GLX_MESA_set_3dfx_mode ***/ - { "glXSet3DfxModeMESA", (GLvoid *) glXSet3DfxModeMESA }, + { "glXSet3DfxModeMESA", (__GLXextFuncPtr) glXSet3DfxModeMESA }, /*** GLX_ARB_get_proc_address ***/ - { "glXGetProcAddressARB", (GLvoid *) glXGetProcAddressARB }, + { "glXGetProcAddressARB", (__GLXextFuncPtr) glXGetProcAddressARB }, /*** GLX_NV_vertex_array_range ***/ - { "glXAllocateMemoryNV", (GLvoid *) glXAllocateMemoryNV }, - { "glXFreeMemoryNV", (GLvoid *) glXFreeMemoryNV }, + { "glXAllocateMemoryNV", (__GLXextFuncPtr) glXAllocateMemoryNV }, + { "glXFreeMemoryNV", (__GLXextFuncPtr) glXFreeMemoryNV }, /*** GLX_MESA_agp_offset ***/ - { "glXGetAGPOffsetMESA", (GLvoid *) glXGetAGPOffsetMESA }, + { "glXGetAGPOffsetMESA", (__GLXextFuncPtr) glXGetAGPOffsetMESA }, /*** GLX_ARB_render_texture ***/ - { "glXBindTexImageARB", (GLvoid *) glXBindTexImageARB }, - { "glXReleaseTexImageARB", (GLvoid *) glXReleaseTexImageARB }, - { "glXDrawableAttribARB", (GLvoid *) glXDrawableAttribARB }, + { "glXBindTexImageARB", (__GLXextFuncPtr) glXBindTexImageARB }, + { "glXReleaseTexImageARB", (__GLXextFuncPtr) glXReleaseTexImageARB }, + { "glXDrawableAttribARB", (__GLXextFuncPtr) glXDrawableAttribARB }, { NULL, NULL } /* end of list */ }; @@ -1304,7 +1304,7 @@ /* * Return address of named glX function, or NULL if not found. */ -const GLvoid * +__GLXextFuncPtr _glxapi_get_proc_address(const char *funcName) { GLuint i; @@ -1321,17 +1321,17 @@ * This function does not get dispatched through the dispatch table * since it's really a "meta" function. */ -void (*glXGetProcAddressARB(const GLubyte *procName))() +__GLXextFuncPtr +glXGetProcAddressARB(const GLubyte *procName) { - typedef void (*gl_function)(); - gl_function f; + __GLXextFuncPtr f; - f = (gl_function) _glxapi_get_proc_address((const char *) procName); + f = _glxapi_get_proc_address((const char *) procName); if (f) { return f; } - f = (gl_function) _glapi_get_proc_address((const char *) procName); + f = (__GLXextFuncPtr) _glapi_get_proc_address((const char *) procName); return f; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/x11/glxapi.h x11r682/xc/extras/Mesa/src/mesa/drivers/x11/glxapi.h --- xc/extras/Mesa/src/mesa/drivers/x11/glxapi.h 2004-06-16 11:19:00.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/x11/glxapi.h 2004-12-15 02:51:02.000000000 +0100 @@ -229,7 +229,7 @@ _glxapi_set_no_op_table(struct _glxapi_table *t); -extern const GLvoid * +extern __GLXextFuncPtr _glxapi_get_proc_address(const char *funcName); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/x11/xm_span.c x11r682/xc/extras/Mesa/src/mesa/drivers/x11/xm_span.c --- xc/extras/Mesa/src/mesa/drivers/x11/xm_span.c 2004-06-16 11:19:02.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/x11/xm_span.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.2.1 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * 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"), @@ -3456,6 +3456,49 @@ /***** Pixel reading *****/ /**********************************************************************/ +#ifndef XFree86Server +/** + * Do clip testing prior to calling XGetImage. If any of the region lies + * outside the screen's bounds, XGetImage will return NULL. + * We use XTranslateCoordinates() to check if that's the case and + * adjust the x, y and length parameters accordingly. + * \return -1 if span is totally clipped away, + * else return number of pixels to skip in the destination array. + */ +static int +clip_for_xgetimage(XMesaContext xmesa, GLuint *n, GLint *x, GLint *y) +{ + XMesaBuffer source = xmesa->xm_buffer; + Window rootWin = RootWindow(xmesa->display, 0); + Window child; + int screenWidth = WidthOfScreen(DefaultScreenOfDisplay(xmesa->display)); + int dx, dy; + if (source->type == PBUFFER) + return 0; + XTranslateCoordinates(xmesa->display, source->buffer, rootWin, + *x, *y, &dx, &dy, &child); + if (dx >= screenWidth) { + /* totally clipped on right */ + return -1; + } + if (dx < 0) { + /* clipped on left */ + int clip = -dx; + if (clip >= *n) + return -1; /* totally clipped on left */ + *x += clip; + *n -= clip; + dx = 0; + return clip; + } + if (dx + *n > screenWidth) { + /* clipped on right */ + int clip = dx + *n - screenWidth; + *n -= clip; + } + return 0; +} +#endif /* @@ -3474,6 +3517,11 @@ #ifndef XFree86Server XMesaImage *span = NULL; int error; + int k = clip_for_xgetimage(xmesa, &n, &x, &y); + if (k < 0) + return; + index += k; + catch_xgetimage_errors( xmesa->display ); span = XGetImage( xmesa->display, source->buffer, x, y, n, 1, AllPlanes, ZPixmap ); @@ -3530,9 +3578,15 @@ x, FLIP(source, y), n, 1, ZPixmap, ~0L, (pointer)span->data); #else + int k; + y = FLIP(source, y); + k = clip_for_xgetimage(xmesa, &n, &x, &y); + if (k < 0) + return; + rgba += k; catch_xgetimage_errors( xmesa->display ); span = XGetImage( xmesa->display, source->buffer, - x, FLIP(source, y), n, 1, AllPlanes, ZPixmap ); + x, y, n, 1, AllPlanes, ZPixmap ); error = check_xgetimage_errors(); #endif if (span && !error) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/drivers/x11/xm_tri.c x11r682/xc/extras/Mesa/src/mesa/drivers/x11/xm_tri.c --- xc/extras/Mesa/src/mesa/drivers/x11/xm_tri.c 2004-06-16 11:19:02.000000000 +0200 +++ xc/extras/Mesa/src/mesa/drivers/x11/xm_tri.c 2004-12-15 02:51:02.000000000 +0100 @@ -1352,7 +1352,6 @@ USE(smooth_DITHER8_z_triangle); else USE(smooth_DITHER_z_triangle); - break; case PF_Lookup: if (depth == 8) USE(smooth_LOOKUP8_z_triangle); @@ -1390,7 +1389,6 @@ USE(flat_DITHER8_z_triangle); else USE(flat_DITHER_z_triangle); - break; case PF_Lookup: if (depth == 8) USE(flat_LOOKUP8_z_triangle); @@ -1425,7 +1423,6 @@ USE(smooth_DITHER8_triangle); else USE(smooth_DITHER_triangle); - break; case PF_Lookup: if (depth == 8) USE(smooth_LOOKUP8_triangle); @@ -1461,7 +1458,6 @@ USE(flat_DITHER8_triangle); else USE(flat_DITHER_triangle); - break; case PF_Lookup: if (depth == 8) USE(flat_LOOKUP8_triangle); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/Makefile x11r682/xc/extras/Mesa/src/mesa/glapi/Makefile --- xc/extras/Mesa/src/mesa/glapi/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/glapi/Makefile 2004-12-15 02:51:02.000000000 +0100 @@ -0,0 +1,38 @@ +# This file isn't used during a normal compilation since we don't want to +# require Python in order to compile Mesa. +# Instead, when the Mesa developers update/change the API interface it's +# up to him/her to re-run this makefile and check in the newly generated files. + + +OUTPUTS = glprocs.h glapitemp.h glapioffsets.h glapitable.h glapi_x86.S + +COMMON = gl_XML.pyc license.pyc gl_API.xml + +all: $(OUTPUTS) + +gl_XML.pyc: gl_XML.py + rm -f gl_XML.pyc > /dev/null + python2 -t -O gl_XML.py + +license.pyc: license.py + rm -f license.pyc > /dev/null + python2 -t -O license.py + +glprocs.h: $(COMMON) gl_procs.py + python2 -t gl_procs.py > glprocs.h + +glapitemp.h: $(COMMON) gl_apitemp.py + python2 -t gl_apitemp.py > glapitemp.h + +glapioffsets.h: $(COMMON) gl_offsets.py + python2 -t gl_offsets.py > glapioffsets.h + +glapitable.h: $(COMMON) gl_table.py + python2 -t gl_table.py > glapitable.h + +glapi_x86.S: $(COMMON) gl_x86_asm.py + python2 -t gl_x86_asm.py > glapi_x86.S + +clean: + rm -f *~ *.pyc + rm -f $(OUTPUTS) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/gl_API.xml x11r682/xc/extras/Mesa/src/mesa/glapi/gl_API.xml --- xc/extras/Mesa/src/mesa/glapi/gl_API.xml 2004-06-16 11:19:07.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/gl_API.xml 2004-12-15 02:51:02.000000000 +0100 @@ -3806,6 +3806,7 @@ + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/gl_SPARC_asm.py x11r682/xc/extras/Mesa/src/mesa/glapi/gl_SPARC_asm.py --- xc/extras/Mesa/src/mesa/glapi/gl_SPARC_asm.py 2004-06-16 11:19:07.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/gl_SPARC_asm.py 2004-12-15 02:51:02.000000000 +0100 @@ -48,7 +48,7 @@ print '' print '#define GLOBL_FN(x) .globl x ; .type x,#function' print '' - print '#if defined(__sparc_v9__) && !defined(__linux__)' + print '#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__)))' print '# define GL_STUB(fn,off)\t\t\t\t\\' print 'GLOBL_FN(fn) ; fn:\t\t\t\t\t\\' print '\tsethi\t%hi(0x00000000), %g4 ;\t\t\t\\' diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/gl_apitemp.py x11r682/xc/extras/Mesa/src/mesa/glapi/gl_apitemp.py --- xc/extras/Mesa/src/mesa/glapi/gl_apitemp.py 2004-07-22 08:52:47.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/gl_apitemp.py 2004-12-15 02:51:02.000000000 +0100 @@ -149,7 +149,7 @@ #error TABLE_ENTRY must be defined #endif -static void * DISPATCH_TABLE_NAME[] = {""" +static _glapi_proc DISPATCH_TABLE_NAME[] = {""" keys = self.functions.keys() keys.sort() for k in keys: @@ -176,7 +176,7 @@ * We list the functions which are not otherwise used. */ #ifdef UNUSED_TABLE_NAME -static const void * const UNUSED_TABLE_NAME[] = {""" +static _glapi_proc UNUSED_TABLE_NAME[] = {""" keys = self.functions.keys() keys.sort() diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/gl_procs.py x11r682/xc/extras/Mesa/src/mesa/glapi/gl_procs.py --- xc/extras/Mesa/src/mesa/glapi/gl_procs.py 2004-06-16 11:19:07.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/gl_procs.py 2004-12-15 02:51:02.000000000 +0100 @@ -50,15 +50,15 @@ print ' */' print '' print 'typedef struct {' - print ' int Name_offset;' + print ' GLint Name_offset;' print '#ifdef NEED_FUNCTION_POINTER' - print ' void * Address;' + print ' _glapi_proc Address;' print '#endif' - print ' unsigned int Offset;' + print ' GLuint Offset;' print '} glprocs_table_t;' print '' print '#ifdef NEED_FUNCTION_POINTER' - print '# define NAME_FUNC_OFFSET(n,f,o) { n , (void *) f , o }' + print '# define NAME_FUNC_OFFSET(n,f,o) { n , (_glapi_proc) f , o }' print '#else' print '# define NAME_FUNC_OFFSET(n,f,o) { n , o }' print '#endif' @@ -132,7 +132,7 @@ base_offset += len(self.functions[k].name) + 3 - print ' NAME_FUNC_OFFSET( -1, NULL, -1 )' + print ' NAME_FUNC_OFFSET( -1, NULL, 0 )' print '};' return diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/gl_x86_asm.py x11r682/xc/extras/Mesa/src/mesa/glapi/gl_x86_asm.py --- xc/extras/Mesa/src/mesa/glapi/gl_x86_asm.py 2004-08-28 06:27:54.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/gl_x86_asm.py 2004-12-15 02:51:02.000000000 +0100 @@ -62,11 +62,17 @@ print '#ifndef __WIN32__' print '' print '#if defined(STDCALL_API)' - print '#define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))' - print '#elif defined(USE_MGL_NAMESPACE)' - print '#define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))' + 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 '#define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))' + print '# if defined(USE_MGL_NAMESPACE)' + print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))' + 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))' diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glapi.c x11r682/xc/extras/Mesa/src/mesa/glapi/glapi.c --- xc/extras/Mesa/src/mesa/glapi/glapi.c 2004-07-22 08:52:42.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glapi.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 4.1 + * Version: 6.3 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2003 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"), @@ -100,25 +99,23 @@ #define F NULL -#define DISPATCH(func, args, msg) \ - if (warn()) { \ - warning_func(NULL, "GL User Error: called without context:"); \ - warning_func msg; \ +#define DISPATCH(func, args, msg) \ + if (warn()) { \ + warning_func(NULL, "GL User Error: called without context: %s", #func); \ } -#define RETURN_DISPATCH(func, args, msg) \ - if (warn()) { \ - warning_func(NULL, "GL User Error: called without context:"); \ - warning_func msg; \ - } \ +#define RETURN_DISPATCH(func, args, msg) \ + if (warn()) { \ + warning_func(NULL, "GL User Error: called without context: %s", #func); \ + } \ return 0 #define DISPATCH_TABLE_NAME __glapi_noop_table -#define UNUSED_TABLE_NAME __usused_noop_functions +#define UNUSED_TABLE_NAME __unused_noop_functions -#define TABLE_ENTRY(name) (void *) NoOp##name +#define TABLE_ENTRY(name) (_glapi_proc) NoOp##name -static int NoOpUnused(void) +static GLint NoOpUnused(void) { if (warn()) { warning_func(NULL, "GL User Error: calling extension function without a current context\n"); @@ -171,11 +168,11 @@ #define DISPATCH_TABLE_NAME __glapi_threadsafe_table -#define UNUSED_TABLE_NAME __usused_threadsafe_functions +#define UNUSED_TABLE_NAME __unused_threadsafe_functions -#define TABLE_ENTRY(name) (void *) gl##name +#define TABLE_ENTRY(name) (_glapi_proc) gl##name -static int glUnused(void) +static GLint glUnused(void) { return 0; } @@ -203,7 +200,8 @@ -/* strdup() is actually not a standard ANSI C or POSIX routine. +/** + * strdup() is actually not a standard ANSI C or POSIX routine. * Irix will not define it if ANSI mode is in effect. */ static char * @@ -219,7 +217,7 @@ -/* +/** * We should call this periodically from a function such as glXMakeCurrent * in order to test if multiple threads are being used. */ @@ -248,7 +246,7 @@ -/* +/** * Set the current context pointer for this thread. * The context pointer is an opaque type which should be cast to * void from the real context pointer type. @@ -256,7 +254,9 @@ void _glapi_set_context(void *context) { + (void) __unused_noop_functions; /* silence a warning */ #if defined(THREADS) + (void) __unused_threadsafe_functions; /* silence a warning */ _glthread_SetTSD(&ContextTSD, context); _glapi_Context = (ThreadSafe) ? NULL : context; #else @@ -266,7 +266,7 @@ -/* +/** * Get the current context pointer for this thread. * The context pointer is an opaque type which should be cast from * void to the real context pointer type. @@ -288,7 +288,7 @@ -/* +/** * Set the global or per-thread dispatch table pointer. */ void @@ -336,7 +336,7 @@ -/* +/** * Return pointer to current dispatch table for calling thread. */ struct _glapi_table * @@ -452,13 +452,6 @@ } -struct name_address_offset { - const char *Name; - GLvoid *Address; - GLuint Offset; -}; - - #if !defined( USE_X86_ASM ) #define NEED_FUNCTION_POINTER #endif @@ -467,12 +460,16 @@ #include "glprocs.h" +/** + * Search the table of static entrypoint functions for the named function + * and return the corresponding glprocs_table_t entry. + */ static const glprocs_table_t * find_entry( const char * n ) { - unsigned i; + GLuint i; - for ( i = 0 ; static_functions[i].Name_offset >= 0 ; i++ ) { + for (i = 0; static_functions[i].Name_offset >= 0; i++) { const char * test_name; test_name = gl_string_table + static_functions[i].Name_offset; @@ -483,7 +480,8 @@ return NULL; } -/* + +/** * Return dispatch table offset of the named static (built-in) function. * Return -1 if function not found. */ @@ -509,18 +507,18 @@ # endif -/* +/** * Return dispatch function address the named static (built-in) function. * Return NULL if function not found. */ -static const GLvoid * +static const _glapi_proc get_static_proc_address(const char *funcName) { const glprocs_table_t * const f = find_entry( funcName ); if ( f != NULL ) { - return gl_dispatch_functions_start - + (X86_DISPATCH_FUNCTION_SIZE * f->Offset); + return (_glapi_proc) (gl_dispatch_functions_start + + (X86_DISPATCH_FUNCTION_SIZE * f->Offset)); } else { return NULL; @@ -530,11 +528,11 @@ #else -/* - * Return dispatch function address the named static (built-in) function. - * Return NULL if function not found. +/** + * Return pointer to the named static (built-in) function. + * \return NULL if function not found. */ -static const GLvoid * +static const _glapi_proc get_static_proc_address(const char *funcName) { const glprocs_table_t * const f = find_entry( funcName ); @@ -544,12 +542,16 @@ #endif /* USE_X86_ASM */ +/** + * Return the name of the function at the given offset in the dispatch + * table. For debugging only. + */ static const char * get_static_proc_name( GLuint offset ) { - unsigned i; + GLuint i; - for ( i = 0 ; static_functions[i].Name_offset >= 0 ; i++ ) { + for (i = 0; static_functions[i].Name_offset >= 0; i++) { if (static_functions[i].Offset == offset) { return gl_string_table + static_functions[i].Name_offset; } @@ -570,7 +572,7 @@ /* - * The disptach table size (number of entries) is the sizeof the + * The dispatch table size (number of entries) is the size of the * _glapi_table struct plus the number of dynamic entries we can add. * The extra slots can be filled in by DRI drivers that register new extension * functions. @@ -578,6 +580,13 @@ #define DISPATCH_TABLE_SIZE (sizeof(struct _glapi_table) / sizeof(void *) + MAX_EXTENSION_FUNCS) +struct name_address_offset { + const char *Name; + _glapi_proc Address; + GLuint Offset; +}; + + static struct name_address_offset ExtEntryTable[MAX_EXTENSION_FUNCS]; static GLuint NumExtEntryPoints = 0; @@ -585,12 +594,12 @@ extern void __glapi_sparc_icache_flush(unsigned int *); #endif -/* +/** * Generate a dispatch function (entrypoint) which jumps through * the given slot number (offset) in the current dispatch table. * We need assembly language in order to accomplish this. */ -static void * +static _glapi_proc generate_entrypoint(GLuint functionOffset) { #if defined(USE_X86_ASM) @@ -633,10 +642,10 @@ *(unsigned int *)(code + 0x10) = (unsigned int)_glapi_get_dispatch - next_insn; *(unsigned int *)(code + 0x16) = (unsigned int)functionOffset * 4; } - return code; + return (_glapi_proc) code; #elif defined(USE_SPARC_ASM) -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) static const unsigned int insn_template[] = { 0x05000000, /* sethi %uhi(_glapi_Dispatch), %g2 */ 0x03000000, /* sethi %hi(_glapi_Dispatch), %g1 */ @@ -664,7 +673,7 @@ if (code) { memcpy(code, insn_template, sizeof(insn_template)); -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) code[0] |= (glapi_addr >> (32 + 10)); code[1] |= ((glapi_addr & 0xffffffff) >> 10); __glapi_sparc_icache_flush(&code[0]); @@ -682,19 +691,20 @@ __glapi_sparc_icache_flush(&code[2]); #endif } - return code; + return (_glapi_proc) code; #else + (void) functionOffset; return NULL; #endif /* USE_*_ASM */ } -/* +/** * This function inserts a new dispatch offset into the assembly language * stub that was generated with the preceeding function. */ static void -fill_in_entrypoint_offset(void *entrypoint, GLuint offset) +fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset) { #if defined(USE_X86_ASM) @@ -706,7 +716,7 @@ /* XXX this hasn't been tested! */ unsigned int *code = (unsigned int *) entrypoint; -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) code[6] = 0x05000000; /* sethi %hi(8 * glapioffset), %g2 */ code[7] = 0x8410a000; /* or %g2, %lo(8 * glapioffset), %g2 */ code[6] |= ((offset * 8) >> 10); @@ -718,11 +728,17 @@ __glapi_sparc_icache_flush(&code[2]); #endif /* __sparc_v9__ && !linux */ +#else + + /* an unimplemented architecture */ + (void) entrypoint; + (void) offset; + #endif /* USE_*_ASM */ } -/* +/** * Add a new extension function entrypoint. * Return: GL_TRUE = success or GL_FALSE = failure */ @@ -732,7 +748,7 @@ /* trivial rejection test */ #ifdef MANGLE if (!funcName || funcName[0] != 'm' || funcName[1] != 'g' || funcName[2] != 'l') - return NULL; + return GL_FALSE; #else if (!funcName || funcName[0] != 'g' || funcName[1] != 'l') return GL_FALSE; @@ -778,7 +794,7 @@ return GL_FALSE; } else { - void *entrypoint = generate_entrypoint(offset); + _glapi_proc entrypoint = generate_entrypoint(offset); if (!entrypoint) return GL_FALSE; /* couldn't generate assembly */ @@ -796,7 +812,7 @@ } -/* +/** * Return offset of entrypoint for named function within dispatch table. */ GLint @@ -816,10 +832,12 @@ -/* - * Return entrypoint for named function. +/** + * Return pointer to the named function. If the function name isn't found + * in the name of static functions, try generating a new API entrypoint on + * the fly with assembly language. */ -const GLvoid * +const _glapi_proc _glapi_get_proc_address(const char *funcName) { GLuint i; @@ -841,7 +859,7 @@ /* search static functions */ { - const GLvoid *func = get_static_proc_address(funcName); + const _glapi_proc func = get_static_proc_address(funcName); if (func) return func; } @@ -853,7 +871,7 @@ * when you try calling a GL function that doesn't really exist. */ if (NumExtEntryPoints < MAX_EXTENSION_FUNCS) { - GLvoid *entrypoint = generate_entrypoint(~0); + _glapi_proc entrypoint = generate_entrypoint(~0); if (!entrypoint) return GL_FALSE; @@ -872,7 +890,7 @@ -/* +/** * Return the name of the function at the given dispatch offset. * This is only intended for debugging. */ @@ -899,7 +917,7 @@ -/* +/** * Return size of dispatch table struct as number of functions (or * slots). */ @@ -911,7 +929,7 @@ -/* +/** * Get API dispatcher version string. */ const char * @@ -922,7 +940,7 @@ -/* +/** * Make sure there are no NULL pointers in the given dispatch table. * Intended for debugging purposes. */ @@ -988,7 +1006,7 @@ GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *); assert(secondaryColor3fOffset == _gloffset_SecondaryColor3fEXT); assert(secondaryColor3fOffset == offset); - assert(_glapi_get_proc_address("glSecondaryColor3fEXT") == (void *) &glSecondaryColor3fEXT); + assert(_glapi_get_proc_address("glSecondaryColor3fEXT") == (_glapi_proc) &glSecondaryColor3fEXT); } { GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV"); @@ -996,7 +1014,7 @@ GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *); assert(pointParameterivOffset == _gloffset_PointParameterivNV); assert(pointParameterivOffset == offset); - assert(_glapi_get_proc_address("glPointParameterivNV") == (void *) &glPointParameterivNV); + assert(_glapi_get_proc_address("glPointParameterivNV") == (_glapi_proc) &glPointParameterivNV); } { GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV"); @@ -1004,7 +1022,9 @@ GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *); assert(setFenceOffset == _gloffset_SetFenceNV); assert(setFenceOffset == offset); - assert(_glapi_get_proc_address("glSetFenceNV") == (void *) &glSetFenceNV); + assert(_glapi_get_proc_address("glSetFenceNV") == (_glapi_proc) &glSetFenceNV); } +#else + (void) table; #endif } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glapi.h x11r682/xc/extras/Mesa/src/mesa/glapi/glapi.h --- xc/extras/Mesa/src/mesa/glapi/glapi.h 2004-06-16 11:19:03.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glapi.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 6.3 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * 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"), @@ -24,6 +23,24 @@ */ +/** + * \mainpage Mesa GL API Module + * + * \section GLAPIIntroduction Introduction + * + * The Mesa GL API module is responsible for dispatching all the + * gl*() functions. All GL functions are dispatched by jumping through + * the current dispatch table (basically a struct full of function + * pointers.) + * + * A per-thread current dispatch table and per-thread current context + * pointer are managed by this module too. + * + * This module is intended to be non-Mesa-specific so it can be used + * with the X/DRI libGL also. + */ + + #ifndef _GLAPI_H #define _GLAPI_H @@ -34,6 +51,8 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); +typedef void (*_glapi_proc)(void); /* generic function pointer */ + extern void *_glapi_Context; @@ -98,7 +117,7 @@ _glapi_get_proc_offset(const char *funcName); -extern const GLvoid * +extern const _glapi_proc _glapi_get_proc_address(const char *funcName); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glapioffsets.h x11r682/xc/extras/Mesa/src/mesa/glapi/glapioffsets.h --- xc/extras/Mesa/src/mesa/glapi/glapioffsets.h 2004-06-16 11:19:04.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glapioffsets.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,4 +1,31 @@ -/* DO NOT EDIT - This file generated automatically by gloffsets.py script */ +/* DO NOT EDIT - This file generated automatically by gl_offsets.py (from Mesa) script */ + +/* + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * (C) Copyright IBM Corporation 2004 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL, IBM, + * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + #ifndef _GLAPI_OFFSETS_H_ #define _GLAPI_OFFSETS_H_ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glapitable.h x11r682/xc/extras/Mesa/src/mesa/glapi/glapitable.h --- xc/extras/Mesa/src/mesa/glapi/glapitable.h 2004-06-16 11:19:04.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glapitable.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,4 +1,31 @@ -/* DO NOT EDIT - This file generated automatically with gltable.py script */ +/* DO NOT EDIT - This file generated automatically by a script */ + +/* + * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * (C) Copyright IBM Corporation 2004 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL, IBM, + * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + #ifndef _GLAPI_TABLE_H_ #define _GLAPI_TABLE_H_ @@ -703,9 +730,9 @@ void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 692 */ void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 693 */ void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 694 */ - void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data); /* 695 */ + void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 695 */ GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 696 */ - void * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 697 */ + GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 697 */ GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 698 */ void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 699 */ void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 700 */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glapitemp.h x11r682/xc/extras/Mesa/src/mesa/glapi/glapitemp.h --- xc/extras/Mesa/src/mesa/glapi/glapitemp.h 2004-07-22 08:52:43.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glapitemp.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,5 +1,31 @@ +/* DO NOT EDIT - This file generated automatically by gl_apitemp.py (from Mesa) script */ + +/* + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * (C) Copyright IBM Corporation 2004 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL, IBM, + * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ -/* DO NOT EDIT! This file is generated by the glapitemp.py script. */ /* * This file is a template which generates the OpenGL API entry point @@ -12,7 +38,7 @@ * msg is a printf-style debug message. * RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value * - * Here's an example which generates the usual OpenGL functions: + * Here is an example which generates the usual OpenGL functions: * #define KEYWORD1 * #define KEYWORD2 * #define NAME(func) gl##func @@ -107,7 +133,7 @@ KEYWORD1 void KEYWORD2 NAME(Color3dv)(const GLdouble * v) { - DISPATCH(Color3dv, (v), (F, "glColor3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Color3f)(GLfloat red, GLfloat green, GLfloat blue) @@ -117,7 +143,7 @@ KEYWORD1 void KEYWORD2 NAME(Color3fv)(const GLfloat * v) { - DISPATCH(Color3fv, (v), (F, "glColor3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Color3i)(GLint red, GLint green, GLint blue) @@ -187,7 +213,7 @@ KEYWORD1 void KEYWORD2 NAME(Color4dv)(const GLdouble * v) { - DISPATCH(Color4dv, (v), (F, "glColor4dv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) @@ -197,7 +223,7 @@ KEYWORD1 void KEYWORD2 NAME(Color4fv)(const GLfloat * v) { - DISPATCH(Color4fv, (v), (F, "glColor4fv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Color4i)(GLint red, GLint green, GLint blue, GLint alpha) @@ -322,7 +348,7 @@ KEYWORD1 void KEYWORD2 NAME(Normal3dv)(const GLdouble * v) { - DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz) @@ -332,7 +358,7 @@ KEYWORD1 void KEYWORD2 NAME(Normal3fv)(const GLfloat * v) { - DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Normal3i)(GLint nx, GLint ny, GLint nz) @@ -362,7 +388,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos2dv)(const GLdouble * v) { - DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos2f)(GLfloat x, GLfloat y) @@ -372,7 +398,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos2fv)(const GLfloat * v) { - DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos2i)(GLint x, GLint y) @@ -402,7 +428,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos3dv)(const GLdouble * v) { - DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z) @@ -412,7 +438,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos3fv)(const GLfloat * v) { - DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos3i)(GLint x, GLint y, GLint z) @@ -442,7 +468,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos4dv)(const GLdouble * v) { - DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) @@ -452,7 +478,7 @@ KEYWORD1 void KEYWORD2 NAME(RasterPos4fv)(const GLfloat * v) { - DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(RasterPos4i)(GLint x, GLint y, GLint z, GLint w) @@ -562,7 +588,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord2dv)(const GLdouble * v) { - DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord2f)(GLfloat s, GLfloat t) @@ -572,7 +598,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord2fv)(const GLfloat * v) { - DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord2i)(GLint s, GLint t) @@ -602,7 +628,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord3dv)(const GLdouble * v) { - DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r) @@ -612,7 +638,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord3fv)(const GLfloat * v) { - DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord3i)(GLint s, GLint t, GLint r) @@ -642,7 +668,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord4dv)(const GLdouble * v) { - DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q) @@ -652,7 +678,7 @@ KEYWORD1 void KEYWORD2 NAME(TexCoord4fv)(const GLfloat * v) { - DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(TexCoord4i)(GLint s, GLint t, GLint r, GLint q) @@ -682,7 +708,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex2dv)(const GLdouble * v) { - DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex2f)(GLfloat x, GLfloat y) @@ -692,7 +718,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex2fv)(const GLfloat * v) { - DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex2i)(GLint x, GLint y) @@ -722,7 +748,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex3dv)(const GLdouble * v) { - DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex3f)(GLfloat x, GLfloat y, GLfloat z) @@ -732,7 +758,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex3fv)(const GLfloat * v) { - DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex3i)(GLint x, GLint y, GLint z) @@ -762,7 +788,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex4dv)(const GLdouble * v) { - DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) @@ -772,7 +798,7 @@ KEYWORD1 void KEYWORD2 NAME(Vertex4fv)(const GLfloat * v) { - DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(Vertex4i)(GLint x, GLint y, GLint z, GLint w) @@ -1062,7 +1088,7 @@ KEYWORD1 void KEYWORD2 NAME(Clear)(GLbitfield mask) { - DISPATCH(Clear, (mask), (F, "glClear(%p);\n", (const void *) mask)); + DISPATCH(Clear, (mask), (F, "glClear(%d);\n", mask)); } KEYWORD1 void KEYWORD2 NAME(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) @@ -1142,7 +1168,7 @@ KEYWORD1 void KEYWORD2 NAME(PushAttrib)(GLbitfield mask) { - DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%p);\n", (const 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) @@ -1212,7 +1238,7 @@ KEYWORD1 void KEYWORD2 NAME(EvalCoord2dv)(const GLdouble * u) { - DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p /* %g, %g */);\n", (const void *) u, u[0], u[1])); + DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);\n", (const void *) u)); } KEYWORD1 void KEYWORD2 NAME(EvalCoord2f)(GLfloat u, GLfloat v) @@ -1222,7 +1248,7 @@ KEYWORD1 void KEYWORD2 NAME(EvalCoord2fv)(const GLfloat * u) { - DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p /* %g, %g */);\n", (const void *) u, u[0], u[1])); + DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);\n", (const void *) u)); } KEYWORD1 void KEYWORD2 NAME(EvalMesh1)(GLenum mode, GLint i1, GLint i2) @@ -1580,6 +1606,11 @@ DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i)); } +KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture) +{ + DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture)); +} + KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); @@ -1610,14 +1641,19 @@ DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);\n", array)); } -KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params) +KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer) { - DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c) { - DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer)); + DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c)); +} + +KEYWORD1 void KEYWORD2 NAME(Indexubv)(const GLubyte * c) +{ + DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (const void *) c)); } KEYWORD1 void KEYWORD2 NAME(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer) @@ -1630,6 +1666,11 @@ DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer)); } +KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units) +{ + DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units)); +} + KEYWORD1 void KEYWORD2 NAME(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); @@ -1640,9 +1681,9 @@ DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units) +KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences) { - DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units)); + 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) @@ -1665,26 +1706,6 @@ 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(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) -{ - DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels)); -} - -KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) -{ - DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels)); -} - -KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences) -{ - RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences)); -} - -KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture) -{ - DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture)); -} - KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures) { DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%d, %p);\n", n, (const void *) textures)); @@ -1695,6 +1716,11 @@ DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%d, %p);\n", n, (const void *) textures)); } +KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params) +{ + DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params)); +} + KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture) { RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture)); @@ -1705,14 +1731,14 @@ DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities)); } -KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c) +KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c)); + 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(Indexubv)(const GLubyte * c) +KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (const void *) c)); + 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(PopClientAttrib)(void) @@ -1722,7 +1748,7 @@ KEYWORD1 void KEYWORD2 NAME(PushClientAttrib)(GLbitfield mask) { - DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%p);\n", (const void *) mask)); + DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%d);\n", mask)); } KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) @@ -1972,7 +1998,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v) { - DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p /* %g, %g */);\n", target, (const void *) v, v[0], v[1])); + DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t) @@ -1982,7 +2008,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v) { - DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p /* %g, %g */);\n", target, (const void *) v, v[0], v[1])); + DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t) @@ -2012,7 +2038,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v) { - DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p /* %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2])); + DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r) @@ -2022,7 +2048,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v) { - DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p /* %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2])); + DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r) @@ -2052,7 +2078,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v) { - DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p /* %g, %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) @@ -2062,7 +2088,7 @@ KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v) { - DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p /* %g, %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q) @@ -2115,1853 +2141,1719 @@ DISPATCH(__unused413, (), (F, "gl__unused413();\n")); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) { - 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)); + DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights) { - 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)); + DISPATCH(GetTexFilterFuncSGIS, (target, filter, weights), (F, "glGetTexFilterFuncSGIS(0x%x, 0x%x, %p);\n", target, filter, (const void *) weights)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights) { - 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)); + DISPATCH(TexFilterFuncSGIS, (target, filter, n, weights), (F, "glTexFilterFuncSGIS(0x%x, 0x%x, %d, %p);\n", target, filter, n, (const void *) weights)); } -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) +KEYWORD1 void KEYWORD2 NAME(GetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) { - 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)); + DISPATCH(GetHistogramEXT, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) { - 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)); + DISPATCH(GetHistogramParameterfvEXT, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint * params) { - 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)); + DISPATCH(GetHistogramParameterivEXT, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img) +KEYWORD1 void KEYWORD2 NAME(GetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) { - DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img)); + DISPATCH(GetMinmaxEXT, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values)); } -KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture) +KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) { - DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture)); + DISPATCH(GetMinmaxParameterfvEXT, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture) +KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint * params) { - DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture)); + DISPATCH(GetMinmaxParameterivEXT, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s) +KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * image) { - DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s)); + DISPATCH(GetConvolutionFilterEXT, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) { - DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(GetConvolutionParameterfvEXT, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s) +KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint * params) { - DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s)); + DISPATCH(GetConvolutionParameterivEXT, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span) { - DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(GetSeparableFilterEXT, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s) +KEYWORD1 void KEYWORD2 NAME(GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid * table) { - DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s)); + DISPATCH(GetColorTableSGI, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v) +KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat * params) { - DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(GetColorTableParameterfvSGI, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s) +KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint * params) { - DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s)); + DISPATCH(GetColorTableParameterivSGI, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(PixelTexGenSGIX)(GLenum mode) { - DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t) +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameteriSGIS)(GLenum pname, GLint param) { - DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t)); + DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params) { - DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p /* %g, %g */);\n", target, (const void *) v, v[0], v[1])); + DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t) +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param) { - DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t)); + DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params) { - DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p /* %g, %g */);\n", target, (const void *) v, v[0], v[1])); + DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t) +KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params) { - DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t)); + DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v) +KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params) { - DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t) +KEYWORD1 void KEYWORD2 NAME(TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t)); + DISPATCH(TexImage4DSGIS, (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), (F, "glTexImage4DSGIS(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, size4d, border, format, type, (const void *) pixels)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(TexSubImage4DSGIS, (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), (F, "glTexSubImage4DSGIS(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, (const void *) pixels)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r) +KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences) { - DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r)); + RETURN_DISPATCH(AreTexturesResidentEXT, (n, textures, residences), (F, "glAreTexturesResidentEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures) { - DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p /* %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2])); + DISPATCH(GenTexturesEXT, (n, textures), (F, "glGenTexturesEXT(%d, %p);\n", n, (const void *) textures)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r) +KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture) { - DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r)); + RETURN_DISPATCH(IsTextureEXT, (texture), (F, "glIsTextureEXT(%d);\n", texture)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points) { - DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p /* %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2])); + DISPATCH(DetailTexFuncSGIS, (target, n, points), (F, "glDetailTexFuncSGIS(0x%x, %d, %p);\n", target, n, (const void *) points)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r) +KEYWORD1 void KEYWORD2 NAME(GetDetailTexFuncSGIS)(GLenum target, GLfloat * points) { - DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r)); + DISPATCH(GetDetailTexFuncSGIS, (target, points), (F, "glGetDetailTexFuncSGIS(0x%x, %p);\n", target, (const void *) points)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v) +KEYWORD1 void KEYWORD2 NAME(SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points) { - DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(SharpenTexFuncSGIS, (target, n, points), (F, "glSharpenTexFuncSGIS(0x%x, %d, %p);\n", target, n, (const void *) points)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r) +KEYWORD1 void KEYWORD2 NAME(GetSharpenTexFuncSGIS)(GLenum target, GLfloat * points) { - DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r)); + DISPATCH(GetSharpenTexFuncSGIS, (target, points), (F, "glGetSharpenTexFuncSGIS(0x%x, %p);\n", target, (const void *) points)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(SampleMaskSGIS)(GLclampf value, GLboolean invert) { - DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) +KEYWORD1 void KEYWORD2 NAME(SamplePatternSGIS)(GLenum pattern) { - DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q)); + DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) { - DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p /* %g, %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2], v[3])); + 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(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer) { - DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q)); + DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%d, %d, %p);\n", stride, count, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) { - DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p /* %g, %g, %g, %g */);\n", target, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q) +KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) { - DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q)); + DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v) +KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) { - DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v)); + 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(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) +KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) { - DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q)); + 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(MultiTexCoord4sv)(GLenum target, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(SpriteParameterfSGIX)(GLenum pname, GLfloat param) { - DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v)); + DISPATCH(SpriteParameterfSGIX, (pname, param), (F, "glSpriteParameterfSGIX(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m) +KEYWORD1 void KEYWORD2 NAME(SpriteParameterfvSGIX)(GLenum pname, const GLfloat * params) { - DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m)); + DISPATCH(SpriteParameterfvSGIX, (pname, params), (F, "glSpriteParameterfvSGIX(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m) +KEYWORD1 void KEYWORD2 NAME(SpriteParameteriSGIX)(GLenum pname, GLint param) { - DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m)); + DISPATCH(SpriteParameteriSGIX, (pname, param), (F, "glSpriteParameteriSGIX(0x%x, %d);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m) +KEYWORD1 void KEYWORD2 NAME(SpriteParameterivSGIX)(GLenum pname, const GLint * params) { - DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m)); + DISPATCH(SpriteParameterivSGIX, (pname, params), (F, "glSpriteParameterivSGIX(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m) +KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param) { - DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m)); + DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert) +KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params) { - DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert)); + DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 GLint KEYWORD2 NAME(GetInstrumentsSGIX)(void) { - 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)); + RETURN_DISPATCH(GetInstrumentsSGIX, (), (F, "glGetInstrumentsSGIX();\n")); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(InstrumentsBufferSGIX)(GLsizei size, GLint * buffer) { - 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)); + DISPATCH(InstrumentsBufferSGIX, (size, buffer), (F, "glInstrumentsBufferSGIX(%d, %p);\n", size, (const void *) buffer)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) +KEYWORD1 GLint KEYWORD2 NAME(PollInstrumentsSGIX)(GLint * marker_p) { - 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)); + RETURN_DISPATCH(PollInstrumentsSGIX, (marker_p), (F, "glPollInstrumentsSGIX(%p);\n", (const void *) marker_p)); } -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) +KEYWORD1 void KEYWORD2 NAME(ReadInstrumentsSGIX)(GLint marker) { - 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)); + DISPATCH(ReadInstrumentsSGIX, (marker), (F, "glReadInstrumentsSGIX(%d);\n", marker)); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(StartInstrumentsSGIX)(void) { - 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)); + DISPATCH(StartInstrumentsSGIX, (), (F, "glStartInstrumentsSGIX();\n")); } -KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(StopInstrumentsSGIX)(GLint marker) { - 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)); + DISPATCH(StopInstrumentsSGIX, (marker), (F, "glStopInstrumentsSGIX(%d);\n", marker)); } -KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img) +KEYWORD1 void KEYWORD2 NAME(FrameZoomSGIX)(GLint factor) { - DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img)); + DISPATCH(FrameZoomSGIX, (factor), (F, "glFrameZoomSGIX(%d);\n", factor)); } -/* No dispatch for WeightbvARB() */ -/* No dispatch for WeightsvARB() */ -/* No dispatch for WeightivARB() */ -/* No dispatch for WeightfvARB() */ -/* No dispatch for WeightdvARB() */ -/* No dispatch for WeightubvARB() */ -/* No dispatch for WeightusvARB() */ -/* No dispatch for WeightuivARB() */ -/* No dispatch for WeightPointerARB() */ -/* No dispatch for VertexBlendARB() */ -/* No dispatch for CurrentPaletteMatrixARB() */ -/* No dispatch for MatrixIndexubvARB() */ -/* No dispatch for MatrixIndexusvARB() */ -/* No dispatch for MatrixIndexuivARB() */ -/* No dispatch for MatrixIndexPointerARB() */ -KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +KEYWORD1 void KEYWORD2 NAME(TagSampleBufferSGIX)(void) { - DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha)); + DISPATCH(TagSampleBufferSGIX, (), (F, "glTagSampleBufferSGIX();\n")); } -KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) +KEYWORD1 void KEYWORD2 NAME(ReferencePlaneSGIX)(const GLdouble * equation) { - DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias)); + DISPATCH(ReferencePlaneSGIX, (equation), (F, "glReferencePlaneSGIX(%p);\n", (const void *) equation)); } -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) +KEYWORD1 void KEYWORD2 NAME(FlushRasterSGIX)(void) { - DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels)); + DISPATCH(FlushRasterSGIX, (), (F, "glFlushRasterSGIX();\n")); } -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) +KEYWORD1 void KEYWORD2 NAME(GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat * params) { - 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)); + DISPATCH(GetListParameterfvSGIX, (list, pname, params), (F, "glGetListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights) +KEYWORD1 void KEYWORD2 NAME(GetListParameterivSGIX)(GLuint list, GLenum pname, GLint * params) { - DISPATCH(GetTexFilterFuncSGIS, (target, filter, weights), (F, "glGetTexFilterFuncSGIS(0x%x, 0x%x, %p);\n", target, filter, (const void *) weights)); + DISPATCH(GetListParameterivSGIX, (list, pname, params), (F, "glGetListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights) +KEYWORD1 void KEYWORD2 NAME(ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param) { - DISPATCH(TexFilterFuncSGIS, (target, filter, n, weights), (F, "glTexFilterFuncSGIS(0x%x, 0x%x, %d, %p);\n", target, filter, n, (const void *) weights)); + DISPATCH(ListParameterfSGIX, (list, pname, param), (F, "glListParameterfSGIX(%d, 0x%x, %f);\n", list, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) +KEYWORD1 void KEYWORD2 NAME(ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat * params) { - 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)); + DISPATCH(ListParameterfvSGIX, (list, pname, params), (F, "glListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) +KEYWORD1 void KEYWORD2 NAME(ListParameteriSGIX)(GLuint list, GLenum pname, GLint param) { - 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)); + DISPATCH(ListParameteriSGIX, (list, pname, param), (F, "glListParameteriSGIX(%d, 0x%x, %d);\n", list, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) +KEYWORD1 void KEYWORD2 NAME(ListParameterivSGIX)(GLuint list, GLenum pname, const GLint * params) { - 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)); + DISPATCH(ListParameterivSGIX, (list, pname, params), (F, "glListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +KEYWORD1 void KEYWORD2 NAME(FragmentColorMaterialSGIX)(GLenum face, GLenum mode) { - 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)); + DISPATCH(FragmentColorMaterialSGIX, (face, mode), (F, "glFragmentColorMaterialSGIX(0x%x, 0x%x);\n", face, mode)); } -KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) +KEYWORD1 void KEYWORD2 NAME(FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param) { - DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width)); + DISPATCH(FragmentLightfSGIX, (light, pname, param), (F, "glFragmentLightfSGIX(0x%x, 0x%x, %f);\n", light, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) +KEYWORD1 void KEYWORD2 NAME(FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params) { - 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)); + DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, "glFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) +KEYWORD1 void KEYWORD2 NAME(FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param) { - 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)); + DISPATCH(FragmentLightiSGIX, (light, pname, param), (F, "glFragmentLightiSGIX(0x%x, 0x%x, %d);\n", light, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(GetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) +KEYWORD1 void KEYWORD2 NAME(FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params) { - DISPATCH(GetHistogramEXT, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values)); + DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, "glFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfSGIX)(GLenum pname, GLfloat param) { - DISPATCH(GetHistogramParameterfvEXT, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(FragmentLightModelfSGIX, (pname, param), (F, "glFragmentLightModelfSGIX(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params) { - DISPATCH(GetHistogramParameterivEXT, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(FragmentLightModelfvSGIX, (pname, params), (F, "glFragmentLightModelfvSGIX(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) +KEYWORD1 void KEYWORD2 NAME(FragmentLightModeliSGIX)(GLenum pname, GLint param) { - DISPATCH(GetMinmaxEXT, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values)); + DISPATCH(FragmentLightModeliSGIX, (pname, param), (F, "glFragmentLightModeliSGIX(0x%x, %d);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(FragmentLightModelivSGIX)(GLenum pname, const GLint * params) { - DISPATCH(GetMinmaxParameterfvEXT, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(FragmentLightModelivSGIX, (pname, params), (F, "glFragmentLightModelivSGIX(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param) { - DISPATCH(GetMinmaxParameterivEXT, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(FragmentMaterialfSGIX, (face, pname, param), (F, "glFragmentMaterialfSGIX(0x%x, 0x%x, %f);\n", face, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params) { - DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink)); + DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, "glFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink) +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param) { - DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink)); + DISPATCH(FragmentMaterialiSGIX, (face, pname, param), (F, "glFragmentMaterialiSGIX(0x%x, 0x%x, %d);\n", face, pname, param)); } -KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params) { - DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target)); + DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, "glFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params) { - DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target)); + DISPATCH(GetFragmentLightfvSGIX, (light, pname, params), (F, "glGetFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image) +KEYWORD1 void KEYWORD2 NAME(GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params) { - 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)); + DISPATCH(GetFragmentLightivSGIX, (light, pname, params), (F, "glGetFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image) +KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params) { - 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)); + DISPATCH(GetFragmentMaterialfvSGIX, (face, pname, params), (F, "glGetFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params) +KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params) { - DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params)); + DISPATCH(GetFragmentMaterialivSGIX, (face, pname, params), (F, "glGetFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(LightEnviSGIX)(GLenum pname, GLint param) { - DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(LightEnviSGIX, (pname, param), (F, "glLightEnviSGIX(0x%x, %d);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params) +KEYWORD1 void KEYWORD2 NAME(VertexWeightfEXT)(GLfloat weight) { - DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params)); + DISPATCH(VertexWeightfEXT, (weight), (F, "glVertexWeightfEXT(%f);\n", weight)); } -KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(VertexWeightfvEXT)(const GLfloat * weight) { - DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(VertexWeightfvEXT, (weight), (F, "glVertexWeightfvEXT(%p);\n", (const void *) weight)); } -KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +KEYWORD1 void KEYWORD2 NAME(VertexWeightPointerEXT)(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer) { - DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width)); + DISPATCH(VertexWeightPointerEXT, (size, type, stride, pointer), (F, "glVertexWeightPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) +KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void) { - 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)); + DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();\n")); } -KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * image) +KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer) { - DISPATCH(GetConvolutionFilterEXT, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image)); + DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%d, %p);\n", length, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params) { - DISPATCH(GetConvolutionParameterfvEXT, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param) { - DISPATCH(GetConvolutionParameterivEXT, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span) +KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params) { - DISPATCH(GetSeparableFilterEXT, (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)); + DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column) +KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param) { - 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)); + DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) +KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { - 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)); + 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(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum) { - DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + 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(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { - DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + 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(CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) +KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params) { - DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width)); + 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(GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid * table) +KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params) { - DISPATCH(GetColorTableSGI, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table)); + 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(GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params) { - DISPATCH(GetColorTableParameterfvSGI, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const 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(GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params) { - DISPATCH(GetColorTableParameterivSGI, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const 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(PixelTexGenSGIX)(GLenum mode) +KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params) { - DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode)); + DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameteriSGIS)(GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params) { - DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param)); + DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void) { - DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n")); } -KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y) { - DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param)); + DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y)); } -KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v) { - DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y) { - DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y)); } -KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v) { - DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels) +KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y) { - DISPATCH(TexImage4DSGIS, (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), (F, "glTexImage4DSGIS(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, size4d, border, format, type, (const void *) pixels)); + DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y)); } -KEYWORD1 void KEYWORD2 NAME(TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels) +KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v) { - DISPATCH(TexSubImage4DSGIS, (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), (F, "glTexSubImage4DSGIS(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, (const void *) pixels)); + DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v)); } -KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences) +KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y) { - RETURN_DISPATCH(AreTexturesResidentEXT, (n, textures, residences), (F, "glAreTexturesResidentEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences)); + DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y)); } -KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture) +KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v) { - DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture)); + DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures) +KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z) { - DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures)); + DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures) +KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v) { - DISPATCH(GenTexturesEXT, (n, textures), (F, "glGenTexturesEXT(%d, %p);\n", n, (const void *) textures)); + DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture) +KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z) { - RETURN_DISPATCH(IsTextureEXT, (texture), (F, "glIsTextureEXT(%d);\n", texture)); + DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities) +KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v) { - DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities)); + DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points) +KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z) { - DISPATCH(DetailTexFuncSGIS, (target, n, points), (F, "glDetailTexFuncSGIS(0x%x, %d, %p);\n", target, n, (const void *) points)); + DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(GetDetailTexFuncSGIS)(GLenum target, GLfloat * points) +KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v) { - DISPATCH(GetDetailTexFuncSGIS, (target, points), (F, "glGetDetailTexFuncSGIS(0x%x, %p);\n", target, (const void *) points)); + DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points) +KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z) { - DISPATCH(SharpenTexFuncSGIS, (target, n, points), (F, "glSharpenTexFuncSGIS(0x%x, %d, %p);\n", target, n, (const void *) points)); + DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(GetSharpenTexFuncSGIS)(GLenum target, GLfloat * points) +KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v) { - DISPATCH(GetSharpenTexFuncSGIS, (target, points), (F, "glGetSharpenTexFuncSGIS(0x%x, %p);\n", target, (const void *) points)); + DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SampleMaskSGIS)(GLclampf value, GLboolean invert) +KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert)); + DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(SamplePatternSGIS)(GLenum pattern) +KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v) { - DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern)); + DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i) +KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i)); + DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v) { - DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer)); + DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count) +KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w) { - DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count)); + DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer) +KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v) { - DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%d, %d, %p);\n", stride, count, (const void *) pointer)); + DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params) +KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w) { - DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v) { - DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer)); + DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { - DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer)); + DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } -KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(IndexMaterialEXT)(GLenum face, GLenum mode) { - DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer)); + DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);\n", face, mode)); } -KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(IndexFuncEXT)(GLenum func, GLclampf ref) { - DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer)); + DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);\n", func, ref)); } -KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode) +KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count) { - DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode)); + DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count)); } -KEYWORD1 void KEYWORD2 NAME(SpriteParameterfSGIX)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void) { - DISPATCH(SpriteParameterfSGIX, (pname, param), (F, "glSpriteParameterfSGIX(0x%x, %f);\n", pname, param)); + DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n")); } -KEYWORD1 void KEYWORD2 NAME(SpriteParameterfvSGIX)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(CullParameterdvEXT)(GLenum pname, GLdouble * params) { - DISPATCH(SpriteParameterfvSGIX, (pname, params), (F, "glSpriteParameterfvSGIX(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(SpriteParameteriSGIX)(GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(CullParameterfvEXT)(GLenum pname, GLfloat * params) { - DISPATCH(SpriteParameteriSGIX, (pname, param), (F, "glSpriteParameteriSGIX(0x%x, %d);\n", pname, param)); + DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(SpriteParameterivSGIX)(GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode) { - DISPATCH(SpriteParameterivSGIX, (pname, params), (F, "glSpriteParameterivSGIX(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);\n", target, mode)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord) { - DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param)); + DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord) { - DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord) { - DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param)); + DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord) { - DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfSGIS)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer) { - DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param)); + DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(PointParameterfvSGIS)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data) { - DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) data)); } -KEYWORD1 GLint KEYWORD2 NAME(GetInstrumentsSGIX)(void) +KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params) { - RETURN_DISPATCH(GetInstrumentsSGIX, (), (F, "glGetInstrumentsSGIX();\n")); + DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(InstrumentsBufferSGIX)(GLsizei size, GLint * buffer) +KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) { - DISPATCH(InstrumentsBufferSGIX, (size, buffer), (F, "glInstrumentsBufferSGIX(%d, %p);\n", size, (const void *) buffer)); + DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 GLint KEYWORD2 NAME(PollInstrumentsSGIX)(GLint * marker_p) +KEYWORD1 void KEYWORD2 NAME(TbufferMask3DFX)(GLuint mask) { - RETURN_DISPATCH(PollInstrumentsSGIX, (marker_p), (F, "glPollInstrumentsSGIX(%p);\n", (const void *) marker_p)); + DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);\n", mask)); } -KEYWORD1 void KEYWORD2 NAME(ReadInstrumentsSGIX)(GLint marker) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(ReadInstrumentsSGIX, (marker), (F, "glReadInstrumentsSGIX(%d);\n", marker)); + 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(StartInstrumentsSGIX)(void) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(StartInstrumentsSGIX, (), (F, "glStartInstrumentsSGIX();\n")); + 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(StopInstrumentsSGIX)(GLint marker) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(StopInstrumentsSGIX, (marker), (F, "glStopInstrumentsSGIX(%d);\n", marker)); + 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(FrameZoomSGIX)(GLint factor) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(FrameZoomSGIX, (factor), (F, "glFrameZoomSGIX(%d);\n", factor)); + 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(TagSampleBufferSGIX)(void) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(TagSampleBufferSGIX, (), (F, "glTagSampleBufferSGIX();\n")); + 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)); } -/* No dispatch for DeformationMap3dSGIX() */ -/* No dispatch for DeformationMap3fSGIX() */ -/* No dispatch for DeformSGIX() */ -/* No dispatch for LoadIdentityDeformationMapSGIX() */ -KEYWORD1 void KEYWORD2 NAME(ReferencePlaneSGIX)(const GLdouble * equation) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(ReferencePlaneSGIX, (equation), (F, "glReferencePlaneSGIX(%p);\n", (const void *) equation)); + 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(FlushRasterSGIX)(void) +KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img) { - DISPATCH(FlushRasterSGIX, (), (F, "glFlushRasterSGIX();\n")); + DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img)); } -/* No dispatch for FogFuncSGIS() */ -/* No dispatch for GetFogFuncSGIS() */ -/* No dispatch for ImageTransformParameteriHP() */ -/* No dispatch for ImageTransformParameterfHP() */ -/* No dispatch for ImageTransformParameterivHP() */ -/* No dispatch for ImageTransformParameterfvHP() */ -/* No dispatch for GetImageTransformParameterivHP() */ -/* No dispatch for GetImageTransformParameterfvHP() */ -KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue) { - 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)); + DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v) { - DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width)); + DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue) { - DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);\n", target, mode)); + DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v) { - 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)); + DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue) { - DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) data)); + DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v) { - DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue) { - DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v) { - DISPATCH(GetListParameterfvSGIX, (list, pname, params), (F, "glGetListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); + DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetListParameterivSGIX)(GLuint list, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue) { - DISPATCH(GetListParameterivSGIX, (list, pname, params), (F, "glGetListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); + DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v) { - DISPATCH(ListParameterfSGIX, (list, pname, param), (F, "glListParameterfSGIX(%d, 0x%x, %f);\n", list, pname, param)); + DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue) { - DISPATCH(ListParameterfvSGIX, (list, pname, params), (F, "glListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); + DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(ListParameteriSGIX)(GLuint list, GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v) { - DISPATCH(ListParameteriSGIX, (list, pname, param), (F, "glListParameteriSGIX(%d, 0x%x, %d);\n", list, pname, param)); + DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(ListParameterivSGIX)(GLuint list, GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue) { - DISPATCH(ListParameterivSGIX, (list, pname, params), (F, "glListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (const void *) params)); + DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(IndexMaterialEXT)(GLenum face, GLenum mode) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v) { - DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);\n", face, mode)); + DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(IndexFuncEXT)(GLenum func, GLclampf ref) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue) { - DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);\n", func, ref)); + DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue)); } -KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count) +KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v) { - DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count)); + DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void) +KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { - DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n")); + DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(CullParameterdvEXT)(GLenum pname, GLdouble * params) +KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences) { - DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params)); + RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences)); } -KEYWORD1 void KEYWORD2 NAME(CullParameterfvEXT)(GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id) { - DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);\n", target, id)); } -KEYWORD1 void KEYWORD2 NAME(FragmentColorMaterialSGIX)(GLenum face, GLenum mode) +KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids) { - DISPATCH(FragmentColorMaterialSGIX, (face, mode), (F, "glFragmentColorMaterialSGIX(0x%x, 0x%x);\n", face, mode)); + DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) ids)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params) { - DISPATCH(FragmentLightfSGIX, (light, pname, param), (F, "glFragmentLightfSGIX(0x%x, 0x%x, %f);\n", light, pname, param)); + DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids) +{ + DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) ids)); +} + +KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params) +{ + DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params) { - DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, "glFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (const 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(FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params) { - DISPATCH(FragmentLightiSGIX, (light, pname, param), (F, "glFragmentLightiSGIX(0x%x, 0x%x, %d);\n", light, pname, param)); + DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program) { - DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, "glFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); + DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfSGIX)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params) { - DISPATCH(FragmentLightModelfSGIX, (pname, param), (F, "glFragmentLightModelfSGIX(0x%x, %f);\n", pname, param)); + 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(FragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params) { - DISPATCH(FragmentLightModelfvSGIX, (pname, params), (F, "glFragmentLightModelfvSGIX(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightModeliSGIX)(GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params) { - DISPATCH(FragmentLightModeliSGIX, (pname, param), (F, "glFragmentLightModeliSGIX(0x%x, %d);\n", pname, param)); + DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(FragmentLightModelivSGIX)(GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params) { - DISPATCH(FragmentLightModelivSGIX, (pname, params), (F, "glFragmentLightModelivSGIX(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer) { - DISPATCH(FragmentMaterialfSGIX, (face, pname, param), (F, "glFragmentMaterialfSGIX(0x%x, 0x%x, %f);\n", face, pname, param)); + DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer)); } -KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params) +KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id) { - DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, "glFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); + RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);\n", id)); } -KEYWORD1 void KEYWORD2 NAME(FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program) { - DISPATCH(FragmentMaterialiSGIX, (face, pname, param), (F, "glFragmentMaterialiSGIX(0x%x, 0x%x, %d);\n", face, pname, param)); + DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program)); } -KEYWORD1 void KEYWORD2 NAME(FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, "glFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); + DISPATCH(ProgramParameter4dNV, (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(GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params) { - DISPATCH(GetFragmentLightfvSGIX, (light, pname, params), (F, "glGetFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); + DISPATCH(ProgramParameter4dvNV, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - DISPATCH(GetFragmentLightivSGIX, (light, pname, params), (F, "glGetFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (const void *) params)); + DISPATCH(ProgramParameter4fNV, (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(GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params) { - DISPATCH(GetFragmentMaterialfvSGIX, (face, pname, params), (F, "glGetFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (const void *) params)); + DISPATCH(ProgramParameter4fvNV, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params) { - DISPATCH(GetFragmentMaterialivSGIX, (face, pname, params), (F, "glGetFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (const 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(LightEnviSGIX)(GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params) { - DISPATCH(LightEnviSGIX, (pname, param), (F, "glLightEnviSGIX(0x%x, %d);\n", pname, param)); + DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices) +KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids) { - 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)); + DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids)); } -/* No dispatch for ApplyTextureEXT() */ -/* No dispatch for TextureLightEXT() */ -/* No dispatch for TextureMaterialEXT() */ -/* No dispatch for AsyncMarkerSGIX() */ -/* No dispatch for FinishAsyncSGIX() */ -/* No dispatch for PollAsyncSGIX() */ -/* No dispatch for GenAsyncMarkersSGIX() */ -/* No dispatch for DeleteAsyncMarkersSGIX() */ -/* No dispatch for IsAsyncMarkerSGIX() */ -/* No dispatch for VertexPointervINTEL() */ -/* No dispatch for NormalPointervINTEL() */ -/* No dispatch for ColorPointervINTEL() */ -/* No dispatch for TexCoordPointervINTEL() */ -/* No dispatch for PixelTransformParameteriEXT() */ -/* No dispatch for PixelTransformParameterfEXT() */ -/* No dispatch for PixelTransformParameterivEXT() */ -/* No dispatch for PixelTransformParameterfvEXT() */ -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue) +KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform) { - DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { - DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v)); + 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(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x) { - DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue)); + DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v) { - DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x) { - DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue)); + DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v) { - DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x) { - DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v) { - DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y) { - DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v) { - DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) { - DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v) { - DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y) { - DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v) { - DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z) { - DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue)); + DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v) { - DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) { - DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); + DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z)); } -/* No dispatch for TextureNormalEXT() */ -KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v) { - DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount)); + DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z) { - 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)); + DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v) { - DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord)); + DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord)); + DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v) { - DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord)); + DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord)); + DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v) { - DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer)); + DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v)); } -/* No dispatch for Tangent3bEXT() */ -/* No dispatch for Tangent3bvEXT() */ -/* No dispatch for Tangent3dEXT() */ -/* No dispatch for Tangent3dvEXT() */ -/* No dispatch for Tangent3fEXT() */ -/* No dispatch for Tangent3fvEXT() */ -/* No dispatch for Tangent3iEXT() */ -/* No dispatch for Tangent3ivEXT() */ -/* No dispatch for Tangent3sEXT() */ -/* No dispatch for Tangent3svEXT() */ -/* No dispatch for Binormal3bEXT() */ -/* No dispatch for Binormal3bvEXT() */ -/* No dispatch for Binormal3dEXT() */ -/* No dispatch for Binormal3dvEXT() */ -/* No dispatch for Binormal3fEXT() */ -/* No dispatch for Binormal3fvEXT() */ -/* No dispatch for Binormal3iEXT() */ -/* No dispatch for Binormal3ivEXT() */ -/* No dispatch for Binormal3sEXT() */ -/* No dispatch for Binormal3svEXT() */ -/* No dispatch for TangentPointerEXT() */ -/* No dispatch for BinormalPointerEXT() */ -/* No dispatch for FinishTextureSUNX() */ -/* No dispatch for GlobalAlphaFactorbSUN() */ -/* No dispatch for GlobalAlphaFactorsSUN() */ -/* No dispatch for GlobalAlphaFactoriSUN() */ -/* No dispatch for GlobalAlphaFactorfSUN() */ -/* No dispatch for GlobalAlphaFactordSUN() */ -/* No dispatch for GlobalAlphaFactorubSUN() */ -/* No dispatch for GlobalAlphaFactorusSUN() */ -/* No dispatch for GlobalAlphaFactoruiSUN() */ -/* No dispatch for ReplacementCodeuiSUN() */ -/* No dispatch for ReplacementCodeusSUN() */ -/* No dispatch for ReplacementCodeubSUN() */ -/* No dispatch for ReplacementCodeuivSUN() */ -/* No dispatch for ReplacementCodeusvSUN() */ -/* No dispatch for ReplacementCodeubvSUN() */ -/* No dispatch for ReplacementCodePointerSUN() */ -/* No dispatch for Color4ubVertex2fSUN() */ -/* No dispatch for Color4ubVertex2fvSUN() */ -/* No dispatch for Color4ubVertex3fSUN() */ -/* No dispatch for Color4ubVertex3fvSUN() */ -/* No dispatch for Color3fVertex3fSUN() */ -/* No dispatch for Color3fVertex3fvSUN() */ -/* No dispatch for Normal3fVertex3fSUN() */ -/* No dispatch for Normal3fVertex3fvSUN() */ -/* No dispatch for Color4fNormal3fVertex3fSUN() */ -/* No dispatch for Color4fNormal3fVertex3fvSUN() */ -/* No dispatch for TexCoord2fVertex3fSUN() */ -/* No dispatch for TexCoord2fVertex3fvSUN() */ -/* No dispatch for TexCoord4fVertex4fSUN() */ -/* No dispatch for TexCoord4fVertex4fvSUN() */ -/* No dispatch for TexCoord2fColor4ubVertex3fSUN() */ -/* No dispatch for TexCoord2fColor4ubVertex3fvSUN() */ -/* No dispatch for TexCoord2fColor3fVertex3fSUN() */ -/* No dispatch for TexCoord2fColor3fVertex3fvSUN() */ -/* No dispatch for TexCoord2fNormal3fVertex3fSUN() */ -/* No dispatch for TexCoord2fNormal3fVertex3fvSUN() */ -/* No dispatch for TexCoord2fColor4fNormal3fVertex3fSUN() */ -/* No dispatch for TexCoord2fColor4fNormal3fVertex3fvSUN() */ -/* No dispatch for TexCoord4fColor4fNormal3fVertex4fSUN() */ -/* No dispatch for TexCoord4fColor4fNormal3fVertex4fvSUN() */ -/* No dispatch for ReplacementCodeuiVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiColor4ubVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiColor4ubVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiColor3fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiColor3fVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiNormal3fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiNormal3fVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiColor4fNormal3fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiColor4fNormal3fVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN() */ -/* No dispatch for ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN() */ -KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) { - DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); + DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v) { - DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); + DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexWeightfEXT)(GLfloat weight) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) { - DISPATCH(VertexWeightfEXT, (weight), (F, "glVertexWeightfEXT(%f);\n", weight)); + DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); } -KEYWORD1 void KEYWORD2 NAME(VertexWeightfvEXT)(const GLfloat * weight) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v) { - DISPATCH(VertexWeightfvEXT, (weight), (F, "glVertexWeightfvEXT(%p);\n", (const void *) weight)); + DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexWeightPointerEXT)(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v) { - DISPATCH(VertexWeightPointerEXT, (size, type, stride, pointer), (F, "glVertexWeightPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); + DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v) { - DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();\n")); + DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v) { - DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%d, %p);\n", length, (const void *) pointer)); + DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v) { - DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v) { - DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param)); + DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v) { - DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v) { - DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param)); + DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v) { - 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)); + DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -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) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v) { - 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)); + DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v) { - DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);\n", variable, input, mapping, componentUsage)); + DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v) { - 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)); + DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v) { - 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)); + DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v) { - DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params)); + DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint params) { - DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params)); + DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteriNV(0x%x, %d);\n", pname, params)); } -KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params) { - DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params)); + DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount) { - DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params)); + 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(ResizeBuffersMESA)(void) +KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount) { - DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n")); + 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(WindowPos2dMESA)(GLdouble x, GLdouble y) +KEYWORD1 void KEYWORD2 NAME(ActiveStencilFaceEXT)(GLenum face) { - DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y)); + DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(DeleteFencesNV)(GLsizei n, const GLuint * fences) { - DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y) +KEYWORD1 void KEYWORD2 NAME(GenFencesNV)(GLsizei n, GLuint * fences) { - DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y)); + DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v) +KEYWORD1 GLboolean KEYWORD2 NAME(IsFenceNV)(GLuint fence) { - DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y) +KEYWORD1 GLboolean KEYWORD2 NAME(TestFenceNV)(GLuint fence) { - DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y)); + RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v) +KEYWORD1 void KEYWORD2 NAME(GetFenceivNV)(GLuint fence, GLenum pname, GLint * params) { - DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v)); + DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y) +KEYWORD1 void KEYWORD2 NAME(FinishFenceNV)(GLuint fence) { - DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y)); + DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(SetFenceNV)(GLuint fence, GLenum condition) { - DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v)); + DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v) { - DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z)); + DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v) { - DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v) { - DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z)); + DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v) { - DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v) { - DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z)); + DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v) { - DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v) { - DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z)); + DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v) { - DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v)); + DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v) { - DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w)); + DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v) { - DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) +KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer) { - DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w)); + 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(WindowPos4fvMESA)(const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index) { - DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p /* %g, %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w) +KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index) { - DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w)); + DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v) +KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string) { - DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v)); + 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(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w) +KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, 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(WindowPos4svMESA)(const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params) { - DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v)); + DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) +KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - 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)); + 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(MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) +KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params) { - 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)); + DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -/* No dispatch for ColorPointerListIBM() */ -/* No dispatch for SecondaryColorPointerListIBM() */ -/* No dispatch for EdgeFlagPointerListIBM() */ -/* No dispatch for FogCoordPointerListIBM() */ -/* No dispatch for IndexPointerListIBM() */ -/* No dispatch for NormalPointerListIBM() */ -/* No dispatch for TexCoordPointerListIBM() */ -/* No dispatch for VertexPointerListIBM() */ -KEYWORD1 void KEYWORD2 NAME(TbufferMask3DFX)(GLuint mask) +KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);\n", mask)); + 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(SampleMaskEXT)(GLclampf value, GLboolean invert) +KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params) { - DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);\n", value, invert)); + DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern) +KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern)); + DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); } -/* No dispatch for TextureColorMaskSGIS() */ -/* No dispatch for IglooInterfaceSGIX() */ -/* No dispatch for MapControlPointsNV() */ -/* No dispatch for MapParameterivNV() */ -/* No dispatch for MapParameterfvNV() */ -/* No dispatch for GetMapControlPointsNV() */ -/* No dispatch for GetMapParameterivNV() */ -/* No dispatch for GetMapParameterfvNV() */ -/* No dispatch for GetMapAttribParameterivNV() */ -/* No dispatch for GetMapAttribParameterfvNV() */ -/* No dispatch for EvalMapsNV() */ -/* No dispatch for CombinerStageParameterfvNV() */ -/* No dispatch for GetCombinerStageParameterfvNV() */ -KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y) +KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params) { - DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y)); + DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y) +KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params) { - DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y)); + DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y) +KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params) { - DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y)); + DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y) +KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params) { - DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y)); + DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * p) +KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params) { - DISPATCH(WindowPos2dvMESA, (p), (F, "glWindowPos2dvARB(%p /* %g, %g */);\n", (const void *) p, p[0], p[1])); + DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * p) +KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params) { - DISPATCH(WindowPos2fvMESA, (p), (F, "glWindowPos2fvARB(%p /* %g, %g */);\n", (const void *) p, p[0], p[1])); + DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * p) +KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string) { - DISPATCH(WindowPos2ivMESA, (p), (F, "glWindowPos2ivARB(%p);\n", (const void *) p)); + DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * p) +KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - DISPATCH(WindowPos2svMESA, (p), (F, "glWindowPos2svARB(%p);\n", (const void *) p)); + 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(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z) +KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { - DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z)); + 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(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z) +KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v) { - DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z)); + 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(WindowPos3iARB)(GLint x, GLint y, GLint z) +KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v) { - DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z)); + 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(WindowPos3sARB)(GLshort x, GLshort y, GLshort z) +KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params) { - DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z)); + 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(WindowPos3dvARB)(const GLdouble * p) +KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params) { - DISPATCH(WindowPos3dvMESA, (p), (F, "glWindowPos3dvARB(%p /* %g, %g, %g */);\n", (const void *) p, p[0], p[1], p[2])); + 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(WindowPos3fvARB)(const GLfloat * p) +KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer) { - DISPATCH(WindowPos3fvMESA, (p), (F, "glWindowPos3fvARB(%p /* %g, %g, %g */);\n", (const void *) p, p[0], p[1], p[2])); + DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * p) +KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) { - DISPATCH(WindowPos3ivMESA, (p), (F, "glWindowPos3ivARB(%p);\n", (const void *) p)); + 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(WindowPos3svARB)(const GLshort * p) +KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) { - DISPATCH(WindowPos3svMESA, (p), (F, "glWindowPos3svARB(%p);\n", (const void *) p)); + DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); } -KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences) +KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer) { - RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences)); + DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer)); } -KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id) +KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer) { - DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);\n", target, id)); + DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer)); } -KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params) { - DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) ids)); + DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params) { - DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params)); + DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data) { - DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) ids)); + DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); } -KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params) +KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer) { - DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params)); + RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer)); } -KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params) +KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access) { - DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params)); + RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access)); } -KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params) +KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target) { - DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params)); + RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target)); } -KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program) +KEYWORD1 void KEYWORD2 NAME(DepthBoundsEXT)(GLclampd zmin, GLclampd zmax) { - DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program)); + DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax)); } -KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids) { - DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params)); + DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids)); } -KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params) +KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids) { - DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); + DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids)); } -KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params) +KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id) { - DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); + RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id)); } -KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id) { - DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params)); + DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id)); } -KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer) +KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target) { - DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer)); + DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id) +KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params) { - RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);\n", id)); + DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program) +KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params) { - DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program)); + DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params) { - DISPATCH(ProgramParameter4dNV, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); + DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params) +KEYWORD1 void KEYWORD2 NAME(MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) { - DISPATCH(ProgramParameter4dvNV, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); + DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +KEYWORD1 void KEYWORD2 NAME(MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) { - DISPATCH(ProgramParameter4fNV, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); + DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA) { - DISPATCH(ProgramParameter4fvNV, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); + DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params) +KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture) { - DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p /* %g, %g, %g, %g */);\n", target, index, num, (const void *) params, params[0], params[1], params[2], params[3])); + DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture)); } -KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture) { - DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p /* %g, %g, %g, %g */);\n", target, index, num, (const void *) params, params[0], params[1], params[2], params[3])); + DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture)); } -KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s) { - DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids)); + DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s)); } -KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v) { - DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform)); + DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s) { - DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer)); + DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v) { - DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x)); + DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s) { - DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v)); + DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v) { - DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x)); + DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s) { - DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v)); + DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v) { - DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x)); + DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t) { - DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v)); + DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v) { - DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y)); + DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t) { - DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p /* %g, %g */);\n", index, (const void *) v, v[0], v[1])); + DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v) { - DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y)); + DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t) { - DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p /* %g, %g */);\n", index, (const void *) v, v[0], v[1])); + DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v) { - DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y)); + DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t) { - DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v)); + DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v) { - DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z)); + DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r) { - DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p /* %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2])); + DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v) { - DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z)); + DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r) { - DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p /* %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2])); + DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v) { - DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z)); + DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r) { - DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v)); + DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v) { - DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w)); + DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r) { - DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p /* %g, %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v) { - DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w)); + DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { - DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p /* %g, %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2], v[3])); + 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(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v) { - DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); + DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { - DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v)); + 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(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v) { - DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w)); + DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q) { - DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v)); + 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(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v) { - DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v)); + DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) { - DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v)); + 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(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v) { - DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v)); + DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m) { - DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p /* %g, %g */);\n", index, n, (const void *) v, v[0], v[1])); + DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m) { - DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p /* %g, %g */);\n", index, n, (const void *) v, v[0], v[1])); + DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m) { - DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v)); + DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m) { - DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p /* %g, %g, %g */);\n", index, n, (const void *) v, v[0], v[1], v[2])); + DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert) { - DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p /* %g, %g, %g */);\n", index, n, (const void *) v, v[0], v[1], v[2])); + DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v)); + 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(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p /* %g, %g, %g, %g */);\n", index, n, (const void *) v, v[0], v[1], v[2], v[3])); + 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(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v) +KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) { - DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p /* %g, %g, %g, %g */);\n", index, n, (const void *) v, v[0], v[1], v[2], v[3])); + 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(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v)); + 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(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v)); + 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(PointParameteriNV)(GLenum pname, GLint params) +KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) { - DISPATCH(PointParameteriNV, (pname, params), (F, "glPointParameteriNV(0x%x, %d);\n", pname, params)); + 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(PointParameterivNV)(GLenum pname, const GLint * params) +KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img) { - DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params)); + DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img)); } KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) @@ -4041,7 +3933,7 @@ KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v) { - DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue) @@ -4051,7 +3943,7 @@ KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v) { - DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue) @@ -4104,7 +3996,7 @@ DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const void * pointer) +KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer)); } @@ -4116,7 +4008,7 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v) { - DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y) @@ -4126,7 +4018,7 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v) { - DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p /* %g, %g */);\n", (const void *) v, v[0], v[1])); + DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y) @@ -4156,7 +4048,7 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v) { - DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z) @@ -4166,7 +4058,7 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v) { - DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p /* %g, %g, %g */);\n", (const void *) v, v[0], v[1], v[2])); + DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z) @@ -4181,52 +4073,197 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z) { - DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z)); + DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v) +{ + DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v)); +} + +KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer) +{ + DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer)); +} + +KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) +{ + DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage)); +} + +KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) +{ + DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); +} + +KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer) +{ + DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer)); +} + +KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer) +{ + DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer)); +} + +KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params) +{ + DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params) +{ + DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data) +{ + DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data)); +} + +KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer) +{ + RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer)); +} + +KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access) +{ + RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access)); +} + +KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target) +{ + RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target)); +} + +KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids) +{ + DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids)); +} + +KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids) +{ + DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids)); +} + +KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id) +{ + RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id)); +} + +KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id) +{ + DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id)); +} + +KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target) +{ + DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target)); +} + +KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params) +{ + DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params) +{ + DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params) +{ + DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param) +{ + DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param)); +} + +KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params) +{ + DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y) +{ + DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y) +{ + DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y) +{ + DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y) +{ + DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * p) +{ + DISPATCH(WindowPos2dvMESA, (p), (F, "glWindowPos2dvARB(%p);\n", (const void *) p)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * p) +{ + DISPATCH(WindowPos2fvMESA, (p), (F, "glWindowPos2fvARB(%p);\n", (const void *) p)); +} + +KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * p) +{ + DISPATCH(WindowPos2ivMESA, (p), (F, "glWindowPos2ivARB(%p);\n", (const void *) p)); } -KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v) +KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * p) { - DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v)); + DISPATCH(WindowPos2svMESA, (p), (F, "glWindowPos2svARB(%p);\n", (const void *) p)); } -KEYWORD1 void KEYWORD2 NAME(ActiveStencilFaceEXT)(GLenum face) +KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z) { - DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face)); + DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(DeleteFencesNV)(GLsizei n, const GLuint * fences) +KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z) { - DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences)); + DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z)); } -KEYWORD1 void KEYWORD2 NAME(GenFencesNV)(GLsizei n, GLuint * fences) +KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z) { - DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences)); + DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsFenceNV)(GLuint fence) +KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z) { - RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence)); + DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z)); } -KEYWORD1 GLboolean KEYWORD2 NAME(TestFenceNV)(GLuint fence) +KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * p) { - RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence)); + DISPATCH(WindowPos3dvMESA, (p), (F, "glWindowPos3dvARB(%p);\n", (const void *) p)); } -KEYWORD1 void KEYWORD2 NAME(GetFenceivNV)(GLuint fence, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * p) { - DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params)); + DISPATCH(WindowPos3fvMESA, (p), (F, "glWindowPos3fvARB(%p);\n", (const void *) p)); } -KEYWORD1 void KEYWORD2 NAME(FinishFenceNV)(GLuint fence) +KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * p) { - DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence)); + DISPATCH(WindowPos3ivMESA, (p), (F, "glWindowPos3ivARB(%p);\n", (const void *) p)); } -KEYWORD1 void KEYWORD2 NAME(SetFenceNV)(GLuint fence, GLenum condition) +KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * p) { - DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition)); + DISPATCH(WindowPos3svMESA, (p), (F, "glWindowPos3svARB(%p);\n", (const void *) p)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x) @@ -4316,12 +4353,12 @@ KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v) { - DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvARB(%d, %p /* %g, %g */);\n", index, (const void *) v, v[0], v[1])); + DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v) { - DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvARB(%d, %p /* %g, %g */);\n", index, (const void *) v, v[0], v[1])); + DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v) @@ -4331,17 +4368,12 @@ KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v) { - DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvARB(%d, %p /* %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2])); + DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v) { - DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvARB(%d, %p /* %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2])); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v) -{ - DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v)); + DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v) @@ -4349,49 +4381,14 @@ DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v) -{ - DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v) -{ - DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v) -{ - DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v) -{ - DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v)); -} - KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v) { - DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvARB(%d, %p /* %g, %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v) { - DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvARB(%d, %p /* %g, %g, %g, %g */);\n", index, (const void *) v, v[0], v[1], v[2], v[3])); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v) -{ - DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v) -{ - DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v) -{ - DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v)); + DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v)); } KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v) @@ -4399,36 +4396,6 @@ DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v)); } -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v) -{ - DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v) -{ - DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v)); -} - -KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer) -{ - DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer)); -} - -KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index) -{ - DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index)); -} - -KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index) -{ - DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string) -{ - DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string)); -} - KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program) { DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program)); @@ -4449,76 +4416,6 @@ RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program)); } -KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ - DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params) -{ - DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ - DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params) -{ - DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ - DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params) -{ - DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ - DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params) -{ - DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p /* %g, %g, %g, %g */);\n", target, index, (const void *) params, params[0], params[1], params[2], params[3])); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params) -{ - DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params) -{ - DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params) -{ - DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params) -{ - DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params)); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params) -{ - DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); -} - -KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string) -{ - DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string)); -} - KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params) { DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params)); @@ -4539,239 +4436,224 @@ DISPATCH(GetVertexAttribPointervNV, (index, pname, params), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ - DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ - DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w)); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v) -{ - DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p /* %g, %g, %g, %g */);\n", id, len, (const void *) name, (const void *) v, v[0], v[1], v[2], v[3])); -} - -KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v) +KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { - DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p /* %g, %g, %g, %g */);\n", id, len, (const void *) name, (const void *) v, v[0], v[1], v[2], v[3])); + DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha)); } -KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params) +KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params)); + DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, 0x%x, %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(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params) +KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params)); + 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(BindBufferARB)(GLenum target, GLuint buffer) +KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer)); + 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(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) +KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) { - DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %p, %p, 0x%x);\n", target, (const void *) size, (const void *) data, usage)); + DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels)); } -KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) { - DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %p, %p, %p);\n", target, (const void *) offset, (const void *) size, (const void *) data)); + 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(DeleteBuffersARB)(GLsizei n, const GLuint * buffer) +KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { - DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer)); + 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(GenBuffersARB)(GLsizei n, GLuint * buffer) +KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) { - DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer)); + 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(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + 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(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params) +KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + 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(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data) +KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) { - DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %p, %p, %p);\n", target, (const void *) offset, (const void *) size, (const void *) data)); + DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer) +KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink) { - RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer)); + DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink)); } -KEYWORD1 void * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access) +KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target) { - RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access)); + DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target)); } -KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target) { - RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target)); + DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target)); } -KEYWORD1 void KEYWORD2 NAME(DepthBoundsEXT)(GLclampd zmin, GLclampd zmax) +KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image) { - DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax)); + 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(GenQueriesARB)(GLsizei n, GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image) { - DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids)); + 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(DeleteQueriesARB)(GLsizei n, const GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params) { - DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids)); + DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id) +KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params) { - RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id)); + DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id) +KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params) { - DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id)); + DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params)); } -KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params) { - DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target)); + DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { - DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + 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(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { - DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params)); + 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(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params) +KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column) { - DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params)); + 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(BindBuffer)(GLenum target, GLuint buffer) +KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) { - DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer)); + 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(BufferData)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) +KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params) { - DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %p, %p, 0x%x);\n", target, (const void *) size, (const void *) data, usage)); + DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) +KEYWORD1 void KEYWORD2 NAME(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params) { - DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %p, %p, %p);\n", target, (const void *) offset, (const void *) size, (const void *) data)); + DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer) +KEYWORD1 void KEYWORD2 NAME(CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) { - DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer)); + 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(GenBuffers)(GLsizei n, GLuint * buffer) +KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture) { - DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer)); + DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture)); } -KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures) { - DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures)); } -KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params) +KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities) { - DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities)); } -KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data) +KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i) { - DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %p, %p, %p);\n", target, (const void *) offset, (const void *) size, (const void *) data)); + DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer) +KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count) { - RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer)); + DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count)); } -KEYWORD1 void * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access) +KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params) { - RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access)); + DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode) { - RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target)); + DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode)); } -KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data) { - DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids)); + 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(DeleteQueries)(GLsizei n, const GLuint * ids) +KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) { - DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids)); + DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width)); } -KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id) +KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) { - RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id)); + DISPATCH(ColorTable, (target, internalFormat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalFormat, width, format, type, (const void *) table)); } -KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id) +KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices) { - DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id)); + 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(EndQuery)(GLenum target) +KEYWORD1 void KEYWORD2 NAME(SampleMaskEXT)(GLclampf value, GLboolean invert) { - DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target)); + DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);\n", value, invert)); } -KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern) { - DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); + DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern)); } -KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params) +KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA) { - DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params)); + DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA)); } -KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params) +KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { - DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params)); + DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } -KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA) +KEYWORD1 void KEYWORD2 NAME(PointParameterfSGIS)(GLenum pname, GLfloat param) { - DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA)); + DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param)); } -KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA) +KEYWORD1 void KEYWORD2 NAME(PointParameterfvSGIS)(GLenum pname, const GLfloat * params) { - DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA)); + DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } @@ -4787,7 +4669,7 @@ #error TABLE_ENTRY must be defined #endif -void *DISPATCH_TABLE_NAME[] = { +static _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(NewList), TABLE_ENTRY(EndList), TABLE_ENTRY(CallList), @@ -5608,10 +5490,10 @@ /* * This is just used to silence compiler warnings. - * We list the functions which aren't otherwise used. + * We list the functions which are not otherwise used. */ #ifdef UNUSED_TABLE_NAME -void *UNUSED_TABLE_NAME[] = { +static _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(ActiveTexture), TABLE_ENTRY(ClientActiveTexture), TABLE_ENTRY(MultiTexCoord1d), @@ -5658,67 +5540,6 @@ TABLE_ENTRY(CompressedTexSubImage2D), TABLE_ENTRY(CompressedTexSubImage1D), TABLE_ENTRY(GetCompressedTexImage), - TABLE_ENTRY(BlendColorEXT), - TABLE_ENTRY(TexImage3DEXT), - TABLE_ENTRY(TexSubImage3DEXT), - TABLE_ENTRY(TexSubImage1DEXT), - TABLE_ENTRY(TexSubImage2DEXT), - TABLE_ENTRY(CopyTexImage1DEXT), - TABLE_ENTRY(CopyTexImage2DEXT), - TABLE_ENTRY(CopyTexSubImage1DEXT), - TABLE_ENTRY(CopyTexSubImage2DEXT), - TABLE_ENTRY(CopyTexSubImage3DEXT), - TABLE_ENTRY(HistogramEXT), - TABLE_ENTRY(MinmaxEXT), - TABLE_ENTRY(ResetHistogramEXT), - TABLE_ENTRY(ResetMinmaxEXT), - TABLE_ENTRY(ConvolutionFilter1DEXT), - TABLE_ENTRY(ConvolutionFilter2DEXT), - TABLE_ENTRY(ConvolutionParameterfEXT), - TABLE_ENTRY(ConvolutionParameterfvEXT), - TABLE_ENTRY(ConvolutionParameteriEXT), - TABLE_ENTRY(ConvolutionParameterivEXT), - TABLE_ENTRY(CopyConvolutionFilter1DEXT), - TABLE_ENTRY(CopyConvolutionFilter2DEXT), - TABLE_ENTRY(SeparableFilter2DEXT), - TABLE_ENTRY(ColorTableSGI), - TABLE_ENTRY(ColorTableParameterfvSGI), - TABLE_ENTRY(ColorTableParameterivSGI), - TABLE_ENTRY(CopyColorTableSGI), - TABLE_ENTRY(BindTextureEXT), - TABLE_ENTRY(DeleteTexturesEXT), - TABLE_ENTRY(PrioritizeTexturesEXT), - TABLE_ENTRY(ArrayElementEXT), - TABLE_ENTRY(DrawArraysEXT), - TABLE_ENTRY(GetPointervEXT), - TABLE_ENTRY(BlendEquationEXT), - TABLE_ENTRY(PointParameterfARB), - TABLE_ENTRY(PointParameterfvARB), - TABLE_ENTRY(PointParameterfSGIS), - TABLE_ENTRY(PointParameterfvSGIS), - TABLE_ENTRY(ColorSubTableEXT), - TABLE_ENTRY(CopyColorSubTableEXT), - TABLE_ENTRY(ColorTableEXT), - TABLE_ENTRY(DrawRangeElementsEXT), - TABLE_ENTRY(BlendFuncSeparateINGR), - TABLE_ENTRY(SampleMaskEXT), - TABLE_ENTRY(SamplePatternEXT), - TABLE_ENTRY(WindowPos2dARB), - TABLE_ENTRY(WindowPos2fARB), - TABLE_ENTRY(WindowPos2iARB), - TABLE_ENTRY(WindowPos2sARB), - TABLE_ENTRY(WindowPos2dvARB), - TABLE_ENTRY(WindowPos2fvARB), - TABLE_ENTRY(WindowPos2ivARB), - TABLE_ENTRY(WindowPos2svARB), - TABLE_ENTRY(WindowPos3dARB), - TABLE_ENTRY(WindowPos3fARB), - TABLE_ENTRY(WindowPos3iARB), - TABLE_ENTRY(WindowPos3sARB), - TABLE_ENTRY(WindowPos3dvARB), - TABLE_ENTRY(WindowPos3fvARB), - TABLE_ENTRY(WindowPos3ivARB), - TABLE_ENTRY(WindowPos3svARB), TABLE_ENTRY(BlendFuncSeparate), TABLE_ENTRY(FogCoordf), TABLE_ENTRY(FogCoordfv), @@ -5764,6 +5585,43 @@ TABLE_ENTRY(WindowPos3iv), TABLE_ENTRY(WindowPos3s), TABLE_ENTRY(WindowPos3sv), + TABLE_ENTRY(BindBuffer), + TABLE_ENTRY(BufferData), + TABLE_ENTRY(BufferSubData), + TABLE_ENTRY(DeleteBuffers), + TABLE_ENTRY(GenBuffers), + TABLE_ENTRY(GetBufferParameteriv), + TABLE_ENTRY(GetBufferPointerv), + TABLE_ENTRY(GetBufferSubData), + TABLE_ENTRY(IsBuffer), + TABLE_ENTRY(MapBuffer), + TABLE_ENTRY(UnmapBuffer), + TABLE_ENTRY(GenQueries), + TABLE_ENTRY(DeleteQueries), + TABLE_ENTRY(IsQuery), + TABLE_ENTRY(BeginQuery), + TABLE_ENTRY(EndQuery), + TABLE_ENTRY(GetQueryiv), + TABLE_ENTRY(GetQueryObjectiv), + TABLE_ENTRY(GetQueryObjectuiv), + TABLE_ENTRY(PointParameterfARB), + TABLE_ENTRY(PointParameterfvARB), + TABLE_ENTRY(WindowPos2dARB), + TABLE_ENTRY(WindowPos2fARB), + TABLE_ENTRY(WindowPos2iARB), + TABLE_ENTRY(WindowPos2sARB), + TABLE_ENTRY(WindowPos2dvARB), + TABLE_ENTRY(WindowPos2fvARB), + TABLE_ENTRY(WindowPos2ivARB), + TABLE_ENTRY(WindowPos2svARB), + TABLE_ENTRY(WindowPos3dARB), + TABLE_ENTRY(WindowPos3fARB), + TABLE_ENTRY(WindowPos3iARB), + TABLE_ENTRY(WindowPos3sARB), + TABLE_ENTRY(WindowPos3dvARB), + TABLE_ENTRY(WindowPos3fvARB), + TABLE_ENTRY(WindowPos3ivARB), + TABLE_ENTRY(WindowPos3svARB), TABLE_ENTRY(VertexAttrib1sARB), TABLE_ENTRY(VertexAttrib1fARB), TABLE_ENTRY(VertexAttrib1dARB), @@ -5798,26 +5656,50 @@ TABLE_ENTRY(GetVertexAttribfvARB), TABLE_ENTRY(GetVertexAttribivARB), TABLE_ENTRY(GetVertexAttribPointervARB), - TABLE_ENTRY(BindBuffer), - TABLE_ENTRY(BufferData), - TABLE_ENTRY(BufferSubData), - TABLE_ENTRY(DeleteBuffers), - TABLE_ENTRY(GenBuffers), - TABLE_ENTRY(GetBufferParameteriv), - TABLE_ENTRY(GetBufferPointerv), - TABLE_ENTRY(GetBufferSubData), - TABLE_ENTRY(IsBuffer), - TABLE_ENTRY(MapBuffer), - TABLE_ENTRY(UnmapBuffer), - TABLE_ENTRY(GenQueries), - TABLE_ENTRY(DeleteQueries), - TABLE_ENTRY(IsQuery), - TABLE_ENTRY(BeginQuery), - TABLE_ENTRY(EndQuery), - TABLE_ENTRY(GetQueryiv), - TABLE_ENTRY(GetQueryObjectiv), - TABLE_ENTRY(GetQueryObjectuiv), + TABLE_ENTRY(BlendColorEXT), + TABLE_ENTRY(TexImage3DEXT), + TABLE_ENTRY(TexSubImage3DEXT), + TABLE_ENTRY(TexSubImage1DEXT), + TABLE_ENTRY(TexSubImage2DEXT), + TABLE_ENTRY(CopyTexImage1DEXT), + TABLE_ENTRY(CopyTexImage2DEXT), + TABLE_ENTRY(CopyTexSubImage1DEXT), + TABLE_ENTRY(CopyTexSubImage2DEXT), + TABLE_ENTRY(CopyTexSubImage3DEXT), + TABLE_ENTRY(HistogramEXT), + TABLE_ENTRY(MinmaxEXT), + TABLE_ENTRY(ResetHistogramEXT), + TABLE_ENTRY(ResetMinmaxEXT), + TABLE_ENTRY(ConvolutionFilter1DEXT), + TABLE_ENTRY(ConvolutionFilter2DEXT), + TABLE_ENTRY(ConvolutionParameterfEXT), + TABLE_ENTRY(ConvolutionParameterfvEXT), + TABLE_ENTRY(ConvolutionParameteriEXT), + TABLE_ENTRY(ConvolutionParameterivEXT), + TABLE_ENTRY(CopyConvolutionFilter1DEXT), + TABLE_ENTRY(CopyConvolutionFilter2DEXT), + TABLE_ENTRY(SeparableFilter2DEXT), + TABLE_ENTRY(ColorTableSGI), + TABLE_ENTRY(ColorTableParameterfvSGI), + TABLE_ENTRY(ColorTableParameterivSGI), + TABLE_ENTRY(CopyColorTableSGI), + TABLE_ENTRY(BindTextureEXT), + TABLE_ENTRY(DeleteTexturesEXT), + TABLE_ENTRY(PrioritizeTexturesEXT), + TABLE_ENTRY(ArrayElementEXT), + TABLE_ENTRY(DrawArraysEXT), + TABLE_ENTRY(GetPointervEXT), + TABLE_ENTRY(BlendEquationEXT), + TABLE_ENTRY(ColorSubTableEXT), + TABLE_ENTRY(CopyColorSubTableEXT), + TABLE_ENTRY(ColorTableEXT), + TABLE_ENTRY(DrawRangeElementsEXT), + TABLE_ENTRY(SampleMaskEXT), + TABLE_ENTRY(SamplePatternEXT), TABLE_ENTRY(BlendEquationSeparateATI), + TABLE_ENTRY(BlendFuncSeparateINGR), + TABLE_ENTRY(PointParameterfSGIS), + TABLE_ENTRY(PointParameterfvSGIS), }; #endif /*UNUSED_TABLE_NAME*/ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glprocs.h x11r682/xc/extras/Mesa/src/mesa/glapi/glprocs.h --- xc/extras/Mesa/src/mesa/glapi/glprocs.h 2004-06-16 11:19:06.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glprocs.h 2004-12-15 02:51:02.000000000 +0100 @@ -31,939 +31,939 @@ */ typedef struct { - int Name_offset; + GLint Name_offset; #ifdef NEED_FUNCTION_POINTER - void * Address; + _glapi_proc Address; #endif - unsigned int Offset; + GLuint Offset; } glprocs_table_t; #ifdef NEED_FUNCTION_POINTER -# define NAME_FUNC_OFFSET(n,f,o) { n , (void *) f , o } +# define NAME_FUNC_OFFSET(n,f,o) { n , (_glapi_proc) f , o } #else # define NAME_FUNC_OFFSET(n,f,o) { n , o } #endif -static const char gl_string_table[] = { - 'g','l', 'N', 'e', 'w', 'L', 'i', 's', 't', '\0', - 'g','l', 'E', 'n', 'd', 'L', 'i', 's', 't', '\0', - 'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', '\0', - 'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'G', 'e', 'n', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'L', 'i', 's', 't', 'B', 'a', 's', 'e', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', '\0', - 'g','l', 'B', 'i', 't', 'm', 'a', 'p', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', 'v', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'v', '\0', - 'g','l', 'E', 'n', 'd', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'd', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'd', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'f', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'f', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'i', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'i', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 's', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 's', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'd', '\0', - 'g','l', 'R', 'e', 'c', 't', 'd', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'f', '\0', - 'g','l', 'R', 'e', 'c', 't', 'f', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'i', '\0', - 'g','l', 'R', 'e', 'c', 't', 'i', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 's', '\0', - 'g','l', 'R', 'e', 'c', 't', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', 'v', '\0', - 'g','l', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'F', 'a', 'c', 'e', '\0', - 'g','l', 'F', 'o', 'g', 'f', '\0', - 'g','l', 'F', 'o', 'g', 'f', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'i', '\0', - 'g','l', 'F', 'o', 'g', 'i', 'v', '\0', - 'g','l', 'F', 'r', 'o', 'n', 't', 'F', 'a', 'c', 'e', '\0', - 'g','l', 'H', 'i', 'n', 't', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'f', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'i', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', '\0', - 'g','l', 'L', 'i', 'n', 'e', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'L', 'i', 'n', 'e', 'W', 'i', 'd', 't', 'h', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'S', 'i', 'z', 'e', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'S', 'c', 'i', 's', 's', 'o', 'r', '\0', - 'g','l', 'S', 'h', 'a', 'd', 'e', 'M', 'o', 'd', 'e', 'l', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0', - 'g','l', 'F', 'e', 'e', 'd', 'b', 'a', 'c', 'k', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'S', 'e', 'l', 'e', 'c', 't', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'R', 'e', 'n', 'd', 'e', 'r', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'I', 'n', 'i', 't', 'N', 'a', 'm', 'e', 's', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'P', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', 'h', '\0', - 'g','l', 'P', 'o', 'p', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'P', 'u', 's', 'h', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'A', 'c', 'c', 'u', 'm', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'I', 'n', 'd', 'e', 'x', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'C', 'o', 'l', 'o', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'S', 't', 'e', 'n', 'c', 'i', 'l', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'D', 'e', 'p', 't', 'h', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'M', 'a', 's', 'k', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 's', 'k', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'M', 'a', 's', 'k', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 's', 'k', '\0', - 'g','l', 'A', 'c', 'c', 'u', 'm', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'F', 'i', 'n', 'i', 's', 'h', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', '\0', - 'g','l', 'P', 'o', 'p', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'P', 'u', 's', 'h', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'M', 'a', 'p', '1', 'd', '\0', - 'g','l', 'M', 'a', 'p', '1', 'f', '\0', - 'g','l', 'M', 'a', 'p', '2', 'd', '\0', - 'g','l', 'M', 'a', 'p', '2', 'f', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'd', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'f', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'd', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '1', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '1', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '2', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '2', '\0', - 'g','l', 'A', 'l', 'p', 'h', 'a', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'L', 'o', 'g', 'i', 'c', 'O', 'p', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'O', 'p', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'Z', 'o', 'o', 'm', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'f', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'i', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'f', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'i', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'G', 'e', 't', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0', - 'g','l', 'G', 'e', 't', 'D', 'o', 'u', 'b', 'l', 'e', 'v', '\0', - 'g','l', 'G', 'e', 't', 'E', 'r', 'r', 'o', 'r', '\0', - 'g','l', 'G', 'e', 't', 'F', 'l', 'o', 'a', 't', 'v', '\0', - 'g','l', 'G', 'e', 't', 'I', 'n', 't', 'e', 'g', 'e', 'r', 'v', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'd', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'S', 't', 'r', 'i', 'n', 'g', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'I', 's', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\0', - 'g','l', 'I', 's', 'L', 'i', 's', 't', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'R', 'a', 'n', 'g', 'e', '\0', - 'g','l', 'F', 'r', 'u', 's', 't', 'u', 'm', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'M', 'a', 't', 'r', 'i', 'x', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'O', 'r', 't', 'h', 'o', '\0', - 'g','l', 'P', 'o', 'p', 'M', 'a', 't', 'r', 'i', 'x', '\0', - 'g','l', 'P', 'u', 's', 'h', 'M', 'a', 't', 'r', 'i', 'x', '\0', - 'g','l', 'R', 'o', 't', 'a', 't', 'e', 'd', '\0', - 'g','l', 'R', 'o', 't', 'a', 't', 'e', 'f', '\0', - 'g','l', 'S', 'c', 'a', 'l', 'e', 'd', '\0', - 'g','l', 'S', 'c', 'a', 'l', 'e', 'f', '\0', - 'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'd', '\0', - 'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'f', '\0', - 'g','l', 'V', 'i', 'e', 'w', 'p', 'o', 'r', 't', '\0', - 'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', 'v', '\0', - 'g','l', 'I', 'n', 't', 'e', 'r', 'l', 'e', 'a', 'v', 'e', 'd', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0', - 'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'P', 'o', 'p', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'P', 'u', 's', 'h', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\0', - 'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', 'A', 'R', 'B', '\0', - 'g','l', '_', '_', 'u', 'n', 'u', 's', 'e', 'd', '4', '1', '3', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'o', 'l', 'l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 't', 'a', 'r', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 't', 'o', 'p', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'm', 'e', 'Z', 'o', 'o', 'm', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'T', 'a', 'g', 'S', 'a', 'm', 'p', 'l', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'R', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'P', 'l', 'a', 'n', 'e', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', 'R', 'a', 's', 't', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'E', 'n', 'v', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'R', 'e', 's', 'i', 'z', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'F', 'u', 'n', 'c', 'E', 'X', 'T', '\0', - 'g','l', 'L', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'U', 'n', 'l', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'H', 'i', 'n', 't', 'P', 'G', 'I', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'b', 'u', 'f', 'f', 'e', 'r', 'M', 'a', 's', 'k', '3', 'D', 'F', 'X', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'r', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'N', 'V', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'N', 'V', '\0', - 'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'u', 'b', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'a', 'c', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0', - 'g','l', 'G', 'e', 'n', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0', - 'g','l', 'I', 's', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'T', 'e', 's', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'F', 'i', 'n', 'i', 's', 'h', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'S', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'B', 'o', 'u', 'n', 'd', 's', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'I', 'B', 'M', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'I', 'B', 'M', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0', - 'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0', - 'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0', - 'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'E', 'X', 'T', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'A', 'T', 'I', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'I', 'N', 'G', 'R', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', -}; +static const char gl_string_table[] = + "glNewList\0" + "glEndList\0" + "glCallList\0" + "glCallLists\0" + "glDeleteLists\0" + "glGenLists\0" + "glListBase\0" + "glBegin\0" + "glBitmap\0" + "glColor3b\0" + "glColor3bv\0" + "glColor3d\0" + "glColor3dv\0" + "glColor3f\0" + "glColor3fv\0" + "glColor3i\0" + "glColor3iv\0" + "glColor3s\0" + "glColor3sv\0" + "glColor3ub\0" + "glColor3ubv\0" + "glColor3ui\0" + "glColor3uiv\0" + "glColor3us\0" + "glColor3usv\0" + "glColor4b\0" + "glColor4bv\0" + "glColor4d\0" + "glColor4dv\0" + "glColor4f\0" + "glColor4fv\0" + "glColor4i\0" + "glColor4iv\0" + "glColor4s\0" + "glColor4sv\0" + "glColor4ub\0" + "glColor4ubv\0" + "glColor4ui\0" + "glColor4uiv\0" + "glColor4us\0" + "glColor4usv\0" + "glEdgeFlag\0" + "glEdgeFlagv\0" + "glEnd\0" + "glIndexd\0" + "glIndexdv\0" + "glIndexf\0" + "glIndexfv\0" + "glIndexi\0" + "glIndexiv\0" + "glIndexs\0" + "glIndexsv\0" + "glNormal3b\0" + "glNormal3bv\0" + "glNormal3d\0" + "glNormal3dv\0" + "glNormal3f\0" + "glNormal3fv\0" + "glNormal3i\0" + "glNormal3iv\0" + "glNormal3s\0" + "glNormal3sv\0" + "glRasterPos2d\0" + "glRasterPos2dv\0" + "glRasterPos2f\0" + "glRasterPos2fv\0" + "glRasterPos2i\0" + "glRasterPos2iv\0" + "glRasterPos2s\0" + "glRasterPos2sv\0" + "glRasterPos3d\0" + "glRasterPos3dv\0" + "glRasterPos3f\0" + "glRasterPos3fv\0" + "glRasterPos3i\0" + "glRasterPos3iv\0" + "glRasterPos3s\0" + "glRasterPos3sv\0" + "glRasterPos4d\0" + "glRasterPos4dv\0" + "glRasterPos4f\0" + "glRasterPos4fv\0" + "glRasterPos4i\0" + "glRasterPos4iv\0" + "glRasterPos4s\0" + "glRasterPos4sv\0" + "glRectd\0" + "glRectdv\0" + "glRectf\0" + "glRectfv\0" + "glRecti\0" + "glRectiv\0" + "glRects\0" + "glRectsv\0" + "glTexCoord1d\0" + "glTexCoord1dv\0" + "glTexCoord1f\0" + "glTexCoord1fv\0" + "glTexCoord1i\0" + "glTexCoord1iv\0" + "glTexCoord1s\0" + "glTexCoord1sv\0" + "glTexCoord2d\0" + "glTexCoord2dv\0" + "glTexCoord2f\0" + "glTexCoord2fv\0" + "glTexCoord2i\0" + "glTexCoord2iv\0" + "glTexCoord2s\0" + "glTexCoord2sv\0" + "glTexCoord3d\0" + "glTexCoord3dv\0" + "glTexCoord3f\0" + "glTexCoord3fv\0" + "glTexCoord3i\0" + "glTexCoord3iv\0" + "glTexCoord3s\0" + "glTexCoord3sv\0" + "glTexCoord4d\0" + "glTexCoord4dv\0" + "glTexCoord4f\0" + "glTexCoord4fv\0" + "glTexCoord4i\0" + "glTexCoord4iv\0" + "glTexCoord4s\0" + "glTexCoord4sv\0" + "glVertex2d\0" + "glVertex2dv\0" + "glVertex2f\0" + "glVertex2fv\0" + "glVertex2i\0" + "glVertex2iv\0" + "glVertex2s\0" + "glVertex2sv\0" + "glVertex3d\0" + "glVertex3dv\0" + "glVertex3f\0" + "glVertex3fv\0" + "glVertex3i\0" + "glVertex3iv\0" + "glVertex3s\0" + "glVertex3sv\0" + "glVertex4d\0" + "glVertex4dv\0" + "glVertex4f\0" + "glVertex4fv\0" + "glVertex4i\0" + "glVertex4iv\0" + "glVertex4s\0" + "glVertex4sv\0" + "glClipPlane\0" + "glColorMaterial\0" + "glCullFace\0" + "glFogf\0" + "glFogfv\0" + "glFogi\0" + "glFogiv\0" + "glFrontFace\0" + "glHint\0" + "glLightf\0" + "glLightfv\0" + "glLighti\0" + "glLightiv\0" + "glLightModelf\0" + "glLightModelfv\0" + "glLightModeli\0" + "glLightModeliv\0" + "glLineStipple\0" + "glLineWidth\0" + "glMaterialf\0" + "glMaterialfv\0" + "glMateriali\0" + "glMaterialiv\0" + "glPointSize\0" + "glPolygonMode\0" + "glPolygonStipple\0" + "glScissor\0" + "glShadeModel\0" + "glTexParameterf\0" + "glTexParameterfv\0" + "glTexParameteri\0" + "glTexParameteriv\0" + "glTexImage1D\0" + "glTexImage2D\0" + "glTexEnvf\0" + "glTexEnvfv\0" + "glTexEnvi\0" + "glTexEnviv\0" + "glTexGend\0" + "glTexGendv\0" + "glTexGenf\0" + "glTexGenfv\0" + "glTexGeni\0" + "glTexGeniv\0" + "glFeedbackBuffer\0" + "glSelectBuffer\0" + "glRenderMode\0" + "glInitNames\0" + "glLoadName\0" + "glPassThrough\0" + "glPopName\0" + "glPushName\0" + "glDrawBuffer\0" + "glClear\0" + "glClearAccum\0" + "glClearIndex\0" + "glClearColor\0" + "glClearStencil\0" + "glClearDepth\0" + "glStencilMask\0" + "glColorMask\0" + "glDepthMask\0" + "glIndexMask\0" + "glAccum\0" + "glDisable\0" + "glEnable\0" + "glFinish\0" + "glFlush\0" + "glPopAttrib\0" + "glPushAttrib\0" + "glMap1d\0" + "glMap1f\0" + "glMap2d\0" + "glMap2f\0" + "glMapGrid1d\0" + "glMapGrid1f\0" + "glMapGrid2d\0" + "glMapGrid2f\0" + "glEvalCoord1d\0" + "glEvalCoord1dv\0" + "glEvalCoord1f\0" + "glEvalCoord1fv\0" + "glEvalCoord2d\0" + "glEvalCoord2dv\0" + "glEvalCoord2f\0" + "glEvalCoord2fv\0" + "glEvalMesh1\0" + "glEvalPoint1\0" + "glEvalMesh2\0" + "glEvalPoint2\0" + "glAlphaFunc\0" + "glBlendFunc\0" + "glLogicOp\0" + "glStencilFunc\0" + "glStencilOp\0" + "glDepthFunc\0" + "glPixelZoom\0" + "glPixelTransferf\0" + "glPixelTransferi\0" + "glPixelStoref\0" + "glPixelStorei\0" + "glPixelMapfv\0" + "glPixelMapuiv\0" + "glPixelMapusv\0" + "glReadBuffer\0" + "glCopyPixels\0" + "glReadPixels\0" + "glDrawPixels\0" + "glGetBooleanv\0" + "glGetClipPlane\0" + "glGetDoublev\0" + "glGetError\0" + "glGetFloatv\0" + "glGetIntegerv\0" + "glGetLightfv\0" + "glGetLightiv\0" + "glGetMapdv\0" + "glGetMapfv\0" + "glGetMapiv\0" + "glGetMaterialfv\0" + "glGetMaterialiv\0" + "glGetPixelMapfv\0" + "glGetPixelMapuiv\0" + "glGetPixelMapusv\0" + "glGetPolygonStipple\0" + "glGetString\0" + "glGetTexEnvfv\0" + "glGetTexEnviv\0" + "glGetTexGendv\0" + "glGetTexGenfv\0" + "glGetTexGeniv\0" + "glGetTexImage\0" + "glGetTexParameterfv\0" + "glGetTexParameteriv\0" + "glGetTexLevelParameterfv\0" + "glGetTexLevelParameteriv\0" + "glIsEnabled\0" + "glIsList\0" + "glDepthRange\0" + "glFrustum\0" + "glLoadIdentity\0" + "glLoadMatrixf\0" + "glLoadMatrixd\0" + "glMatrixMode\0" + "glMultMatrixf\0" + "glMultMatrixd\0" + "glOrtho\0" + "glPopMatrix\0" + "glPushMatrix\0" + "glRotated\0" + "glRotatef\0" + "glScaled\0" + "glScalef\0" + "glTranslated\0" + "glTranslatef\0" + "glViewport\0" + "glArrayElement\0" + "glBindTexture\0" + "glColorPointer\0" + "glDisableClientState\0" + "glDrawArrays\0" + "glDrawElements\0" + "glEdgeFlagPointer\0" + "glEnableClientState\0" + "glIndexPointer\0" + "glIndexub\0" + "glIndexubv\0" + "glInterleavedArrays\0" + "glNormalPointer\0" + "glPolygonOffset\0" + "glTexCoordPointer\0" + "glVertexPointer\0" + "glAreTexturesResident\0" + "glCopyTexImage1D\0" + "glCopyTexImage2D\0" + "glCopyTexSubImage1D\0" + "glCopyTexSubImage2D\0" + "glDeleteTextures\0" + "glGenTextures\0" + "glGetPointerv\0" + "glIsTexture\0" + "glPrioritizeTextures\0" + "glTexSubImage1D\0" + "glTexSubImage2D\0" + "glPopClientAttrib\0" + "glPushClientAttrib\0" + "glBlendColor\0" + "glBlendEquation\0" + "glDrawRangeElements\0" + "glColorTable\0" + "glColorTableParameterfv\0" + "glColorTableParameteriv\0" + "glCopyColorTable\0" + "glGetColorTable\0" + "glGetColorTableParameterfv\0" + "glGetColorTableParameteriv\0" + "glColorSubTable\0" + "glCopyColorSubTable\0" + "glConvolutionFilter1D\0" + "glConvolutionFilter2D\0" + "glConvolutionParameterf\0" + "glConvolutionParameterfv\0" + "glConvolutionParameteri\0" + "glConvolutionParameteriv\0" + "glCopyConvolutionFilter1D\0" + "glCopyConvolutionFilter2D\0" + "glGetConvolutionFilter\0" + "glGetConvolutionParameterfv\0" + "glGetConvolutionParameteriv\0" + "glGetSeparableFilter\0" + "glSeparableFilter2D\0" + "glGetHistogram\0" + "glGetHistogramParameterfv\0" + "glGetHistogramParameteriv\0" + "glGetMinmax\0" + "glGetMinmaxParameterfv\0" + "glGetMinmaxParameteriv\0" + "glHistogram\0" + "glMinmax\0" + "glResetHistogram\0" + "glResetMinmax\0" + "glTexImage3D\0" + "glTexSubImage3D\0" + "glCopyTexSubImage3D\0" + "glActiveTextureARB\0" + "glClientActiveTextureARB\0" + "glMultiTexCoord1dARB\0" + "glMultiTexCoord1dvARB\0" + "glMultiTexCoord1fARB\0" + "glMultiTexCoord1fvARB\0" + "glMultiTexCoord1iARB\0" + "glMultiTexCoord1ivARB\0" + "glMultiTexCoord1sARB\0" + "glMultiTexCoord1svARB\0" + "glMultiTexCoord2dARB\0" + "glMultiTexCoord2dvARB\0" + "glMultiTexCoord2fARB\0" + "glMultiTexCoord2fvARB\0" + "glMultiTexCoord2iARB\0" + "glMultiTexCoord2ivARB\0" + "glMultiTexCoord2sARB\0" + "glMultiTexCoord2svARB\0" + "glMultiTexCoord3dARB\0" + "glMultiTexCoord3dvARB\0" + "glMultiTexCoord3fARB\0" + "glMultiTexCoord3fvARB\0" + "glMultiTexCoord3iARB\0" + "glMultiTexCoord3ivARB\0" + "glMultiTexCoord3sARB\0" + "glMultiTexCoord3svARB\0" + "glMultiTexCoord4dARB\0" + "glMultiTexCoord4dvARB\0" + "glMultiTexCoord4fARB\0" + "glMultiTexCoord4fvARB\0" + "glMultiTexCoord4iARB\0" + "glMultiTexCoord4ivARB\0" + "glMultiTexCoord4sARB\0" + "glMultiTexCoord4svARB\0" + "glLoadTransposeMatrixfARB\0" + "glLoadTransposeMatrixdARB\0" + "glMultTransposeMatrixfARB\0" + "glMultTransposeMatrixdARB\0" + "glSampleCoverageARB\0" + "gl__unused413\0" + "glPolygonOffsetEXT\0" + "glGetTexFilterFuncSGIS\0" + "glTexFilterFuncSGIS\0" + "glGetHistogramEXT\0" + "glGetHistogramParameterfvEXT\0" + "glGetHistogramParameterivEXT\0" + "glGetMinmaxEXT\0" + "glGetMinmaxParameterfvEXT\0" + "glGetMinmaxParameterivEXT\0" + "glGetConvolutionFilterEXT\0" + "glGetConvolutionParameterfvEXT\0" + "glGetConvolutionParameterivEXT\0" + "glGetSeparableFilterEXT\0" + "glGetColorTableSGI\0" + "glGetColorTableParameterfvSGI\0" + "glGetColorTableParameterivSGI\0" + "glPixelTexGenSGIX\0" + "glPixelTexGenParameteriSGIS\0" + "glPixelTexGenParameterivSGIS\0" + "glPixelTexGenParameterfSGIS\0" + "glPixelTexGenParameterfvSGIS\0" + "glGetPixelTexGenParameterivSGIS\0" + "glGetPixelTexGenParameterfvSGIS\0" + "glTexImage4DSGIS\0" + "glTexSubImage4DSGIS\0" + "glAreTexturesResidentEXT\0" + "glGenTexturesEXT\0" + "glIsTextureEXT\0" + "glDetailTexFuncSGIS\0" + "glGetDetailTexFuncSGIS\0" + "glSharpenTexFuncSGIS\0" + "glGetSharpenTexFuncSGIS\0" + "glSampleMaskSGIS\0" + "glSamplePatternSGIS\0" + "glColorPointerEXT\0" + "glEdgeFlagPointerEXT\0" + "glIndexPointerEXT\0" + "glNormalPointerEXT\0" + "glTexCoordPointerEXT\0" + "glVertexPointerEXT\0" + "glSpriteParameterfSGIX\0" + "glSpriteParameterfvSGIX\0" + "glSpriteParameteriSGIX\0" + "glSpriteParameterivSGIX\0" + "glPointParameterfEXT\0" + "glPointParameterfvEXT\0" + "glGetInstrumentsSGIX\0" + "glInstrumentsBufferSGIX\0" + "glPollInstrumentsSGIX\0" + "glReadInstrumentsSGIX\0" + "glStartInstrumentsSGIX\0" + "glStopInstrumentsSGIX\0" + "glFrameZoomSGIX\0" + "glTagSampleBufferSGIX\0" + "glReferencePlaneSGIX\0" + "glFlushRasterSGIX\0" + "glGetListParameterfvSGIX\0" + "glGetListParameterivSGIX\0" + "glListParameterfSGIX\0" + "glListParameterfvSGIX\0" + "glListParameteriSGIX\0" + "glListParameterivSGIX\0" + "glFragmentColorMaterialSGIX\0" + "glFragmentLightfSGIX\0" + "glFragmentLightfvSGIX\0" + "glFragmentLightiSGIX\0" + "glFragmentLightivSGIX\0" + "glFragmentLightModelfSGIX\0" + "glFragmentLightModelfvSGIX\0" + "glFragmentLightModeliSGIX\0" + "glFragmentLightModelivSGIX\0" + "glFragmentMaterialfSGIX\0" + "glFragmentMaterialfvSGIX\0" + "glFragmentMaterialiSGIX\0" + "glFragmentMaterialivSGIX\0" + "glGetFragmentLightfvSGIX\0" + "glGetFragmentLightivSGIX\0" + "glGetFragmentMaterialfvSGIX\0" + "glGetFragmentMaterialivSGIX\0" + "glLightEnviSGIX\0" + "glVertexWeightfEXT\0" + "glVertexWeightfvEXT\0" + "glVertexWeightPointerEXT\0" + "glFlushVertexArrayRangeNV\0" + "glVertexArrayRangeNV\0" + "glCombinerParameterfvNV\0" + "glCombinerParameterfNV\0" + "glCombinerParameterivNV\0" + "glCombinerParameteriNV\0" + "glCombinerInputNV\0" + "glCombinerOutputNV\0" + "glFinalCombinerInputNV\0" + "glGetCombinerInputParameterfvNV\0" + "glGetCombinerInputParameterivNV\0" + "glGetCombinerOutputParameterfvNV\0" + "glGetCombinerOutputParameterivNV\0" + "glGetFinalCombinerInputParameterfvNV\0" + "glGetFinalCombinerInputParameterivNV\0" + "glResizeBuffersMESA\0" + "glWindowPos2dMESA\0" + "glWindowPos2dvMESA\0" + "glWindowPos2fMESA\0" + "glWindowPos2fvMESA\0" + "glWindowPos2iMESA\0" + "glWindowPos2ivMESA\0" + "glWindowPos2sMESA\0" + "glWindowPos2svMESA\0" + "glWindowPos3dMESA\0" + "glWindowPos3dvMESA\0" + "glWindowPos3fMESA\0" + "glWindowPos3fvMESA\0" + "glWindowPos3iMESA\0" + "glWindowPos3ivMESA\0" + "glWindowPos3sMESA\0" + "glWindowPos3svMESA\0" + "glWindowPos4dMESA\0" + "glWindowPos4dvMESA\0" + "glWindowPos4fMESA\0" + "glWindowPos4fvMESA\0" + "glWindowPos4iMESA\0" + "glWindowPos4ivMESA\0" + "glWindowPos4sMESA\0" + "glWindowPos4svMESA\0" + "glBlendFuncSeparateEXT\0" + "glIndexMaterialEXT\0" + "glIndexFuncEXT\0" + "glLockArraysEXT\0" + "glUnlockArraysEXT\0" + "glCullParameterdvEXT\0" + "glCullParameterfvEXT\0" + "glHintPGI\0" + "glFogCoordfEXT\0" + "glFogCoordfvEXT\0" + "glFogCoorddEXT\0" + "glFogCoorddvEXT\0" + "glFogCoordPointerEXT\0" + "glGetColorTableEXT\0" + "glGetColorTableParameterivEXT\0" + "glGetColorTableParameterfvEXT\0" + "glTbufferMask3DFX\0" + "glCompressedTexImage3DARB\0" + "glCompressedTexImage2DARB\0" + "glCompressedTexImage1DARB\0" + "glCompressedTexSubImage3DARB\0" + "glCompressedTexSubImage2DARB\0" + "glCompressedTexSubImage1DARB\0" + "glGetCompressedTexImageARB\0" + "glSecondaryColor3bEXT\0" + "glSecondaryColor3bvEXT\0" + "glSecondaryColor3dEXT\0" + "glSecondaryColor3dvEXT\0" + "glSecondaryColor3fEXT\0" + "glSecondaryColor3fvEXT\0" + "glSecondaryColor3iEXT\0" + "glSecondaryColor3ivEXT\0" + "glSecondaryColor3sEXT\0" + "glSecondaryColor3svEXT\0" + "glSecondaryColor3ubEXT\0" + "glSecondaryColor3ubvEXT\0" + "glSecondaryColor3uiEXT\0" + "glSecondaryColor3uivEXT\0" + "glSecondaryColor3usEXT\0" + "glSecondaryColor3usvEXT\0" + "glSecondaryColorPointerEXT\0" + "glAreProgramsResidentNV\0" + "glBindProgramNV\0" + "glDeleteProgramsNV\0" + "glExecuteProgramNV\0" + "glGenProgramsNV\0" + "glGetProgramParameterdvNV\0" + "glGetProgramParameterfvNV\0" + "glGetProgramivNV\0" + "glGetProgramStringNV\0" + "glGetTrackMatrixivNV\0" + "glGetVertexAttribdvNV\0" + "glGetVertexAttribfvNV\0" + "glGetVertexAttribivNV\0" + "glGetVertexAttribPointervNV\0" + "glIsProgramNV\0" + "glLoadProgramNV\0" + "glProgramParameter4dNV\0" + "glProgramParameter4dvNV\0" + "glProgramParameter4fNV\0" + "glProgramParameter4fvNV\0" + "glProgramParameters4dvNV\0" + "glProgramParameters4fvNV\0" + "glRequestResidentProgramsNV\0" + "glTrackMatrixNV\0" + "glVertexAttribPointerNV\0" + "glVertexAttrib1dNV\0" + "glVertexAttrib1dvNV\0" + "glVertexAttrib1fNV\0" + "glVertexAttrib1fvNV\0" + "glVertexAttrib1sNV\0" + "glVertexAttrib1svNV\0" + "glVertexAttrib2dNV\0" + "glVertexAttrib2dvNV\0" + "glVertexAttrib2fNV\0" + "glVertexAttrib2fvNV\0" + "glVertexAttrib2sNV\0" + "glVertexAttrib2svNV\0" + "glVertexAttrib3dNV\0" + "glVertexAttrib3dvNV\0" + "glVertexAttrib3fNV\0" + "glVertexAttrib3fvNV\0" + "glVertexAttrib3sNV\0" + "glVertexAttrib3svNV\0" + "glVertexAttrib4dNV\0" + "glVertexAttrib4dvNV\0" + "glVertexAttrib4fNV\0" + "glVertexAttrib4fvNV\0" + "glVertexAttrib4sNV\0" + "glVertexAttrib4svNV\0" + "glVertexAttrib4ubNV\0" + "glVertexAttrib4ubvNV\0" + "glVertexAttribs1dvNV\0" + "glVertexAttribs1fvNV\0" + "glVertexAttribs1svNV\0" + "glVertexAttribs2dvNV\0" + "glVertexAttribs2fvNV\0" + "glVertexAttribs2svNV\0" + "glVertexAttribs3dvNV\0" + "glVertexAttribs3fvNV\0" + "glVertexAttribs3svNV\0" + "glVertexAttribs4dvNV\0" + "glVertexAttribs4fvNV\0" + "glVertexAttribs4svNV\0" + "glVertexAttribs4ubvNV\0" + "glPointParameteriNV\0" + "glPointParameterivNV\0" + "glMultiDrawArraysEXT\0" + "glMultiDrawElementsEXT\0" + "glActiveStencilFaceEXT\0" + "glDeleteFencesNV\0" + "glGenFencesNV\0" + "glIsFenceNV\0" + "glTestFenceNV\0" + "glGetFenceivNV\0" + "glFinishFenceNV\0" + "glSetFenceNV\0" + "glVertexAttrib4bvARB\0" + "glVertexAttrib4ivARB\0" + "glVertexAttrib4ubvARB\0" + "glVertexAttrib4usvARB\0" + "glVertexAttrib4uivARB\0" + "glVertexAttrib4NbvARB\0" + "glVertexAttrib4NsvARB\0" + "glVertexAttrib4NivARB\0" + "glVertexAttrib4NusvARB\0" + "glVertexAttrib4NuivARB\0" + "glVertexAttribPointerARB\0" + "glEnableVertexAttribArrayARB\0" + "glDisableVertexAttribArrayARB\0" + "glProgramStringARB\0" + "glProgramEnvParameter4dARB\0" + "glProgramEnvParameter4dvARB\0" + "glProgramEnvParameter4fARB\0" + "glProgramEnvParameter4fvARB\0" + "glProgramLocalParameter4dARB\0" + "glProgramLocalParameter4dvARB\0" + "glProgramLocalParameter4fARB\0" + "glProgramLocalParameter4fvARB\0" + "glGetProgramEnvParameterdvARB\0" + "glGetProgramEnvParameterfvARB\0" + "glGetProgramLocalParameterdvARB\0" + "glGetProgramLocalParameterfvARB\0" + "glGetProgramivARB\0" + "glGetProgramStringARB\0" + "glProgramNamedParameter4fNV\0" + "glProgramNamedParameter4dNV\0" + "glProgramNamedParameter4fvNV\0" + "glProgramNamedParameter4dvNV\0" + "glGetProgramNamedParameterfvNV\0" + "glGetProgramNamedParameterdvNV\0" + "glBindBufferARB\0" + "glBufferDataARB\0" + "glBufferSubDataARB\0" + "glDeleteBuffersARB\0" + "glGenBuffersARB\0" + "glGetBufferParameterivARB\0" + "glGetBufferPointervARB\0" + "glGetBufferSubDataARB\0" + "glIsBufferARB\0" + "glMapBufferARB\0" + "glUnmapBufferARB\0" + "glDepthBoundsEXT\0" + "glGenQueriesARB\0" + "glDeleteQueriesARB\0" + "glIsQueryARB\0" + "glBeginQueryARB\0" + "glEndQueryARB\0" + "glGetQueryivARB\0" + "glGetQueryObjectivARB\0" + "glGetQueryObjectuivARB\0" + "glMultiModeDrawArraysIBM\0" + "glMultiModeDrawElementsIBM\0" + "glBlendEquationSeparateEXT\0" + "glActiveTexture\0" + "glClientActiveTexture\0" + "glMultiTexCoord1d\0" + "glMultiTexCoord1dv\0" + "glMultiTexCoord1f\0" + "glMultiTexCoord1fv\0" + "glMultiTexCoord1i\0" + "glMultiTexCoord1iv\0" + "glMultiTexCoord1s\0" + "glMultiTexCoord1sv\0" + "glMultiTexCoord2d\0" + "glMultiTexCoord2dv\0" + "glMultiTexCoord2f\0" + "glMultiTexCoord2fv\0" + "glMultiTexCoord2i\0" + "glMultiTexCoord2iv\0" + "glMultiTexCoord2s\0" + "glMultiTexCoord2sv\0" + "glMultiTexCoord3d\0" + "glMultiTexCoord3dv\0" + "glMultiTexCoord3f\0" + "glMultiTexCoord3fv\0" + "glMultiTexCoord3i\0" + "glMultiTexCoord3iv\0" + "glMultiTexCoord3s\0" + "glMultiTexCoord3sv\0" + "glMultiTexCoord4d\0" + "glMultiTexCoord4dv\0" + "glMultiTexCoord4f\0" + "glMultiTexCoord4fv\0" + "glMultiTexCoord4i\0" + "glMultiTexCoord4iv\0" + "glMultiTexCoord4s\0" + "glMultiTexCoord4sv\0" + "glLoadTransposeMatrixf\0" + "glLoadTransposeMatrixd\0" + "glMultTransposeMatrixf\0" + "glMultTransposeMatrixd\0" + "glSampleCoverage\0" + "glCompressedTexImage3D\0" + "glCompressedTexImage2D\0" + "glCompressedTexImage1D\0" + "glCompressedTexSubImage3D\0" + "glCompressedTexSubImage2D\0" + "glCompressedTexSubImage1D\0" + "glGetCompressedTexImage\0" + "glBlendFuncSeparate\0" + "glFogCoordf\0" + "glFogCoordfv\0" + "glFogCoordd\0" + "glFogCoorddv\0" + "glFogCoordPointer\0" + "glMultiDrawArrays\0" + "glMultiDrawElements\0" + "glPointParameterf\0" + "glPointParameterfv\0" + "glPointParameteri\0" + "glPointParameteriv\0" + "glSecondaryColor3b\0" + "glSecondaryColor3bv\0" + "glSecondaryColor3d\0" + "glSecondaryColor3dv\0" + "glSecondaryColor3f\0" + "glSecondaryColor3fv\0" + "glSecondaryColor3i\0" + "glSecondaryColor3iv\0" + "glSecondaryColor3s\0" + "glSecondaryColor3sv\0" + "glSecondaryColor3ub\0" + "glSecondaryColor3ubv\0" + "glSecondaryColor3ui\0" + "glSecondaryColor3uiv\0" + "glSecondaryColor3us\0" + "glSecondaryColor3usv\0" + "glSecondaryColorPointer\0" + "glWindowPos2d\0" + "glWindowPos2dv\0" + "glWindowPos2f\0" + "glWindowPos2fv\0" + "glWindowPos2i\0" + "glWindowPos2iv\0" + "glWindowPos2s\0" + "glWindowPos2sv\0" + "glWindowPos3d\0" + "glWindowPos3dv\0" + "glWindowPos3f\0" + "glWindowPos3fv\0" + "glWindowPos3i\0" + "glWindowPos3iv\0" + "glWindowPos3s\0" + "glWindowPos3sv\0" + "glBindBuffer\0" + "glBufferData\0" + "glBufferSubData\0" + "glDeleteBuffers\0" + "glGenBuffers\0" + "glGetBufferParameteriv\0" + "glGetBufferPointerv\0" + "glGetBufferSubData\0" + "glIsBuffer\0" + "glMapBuffer\0" + "glUnmapBuffer\0" + "glGenQueries\0" + "glDeleteQueries\0" + "glIsQuery\0" + "glBeginQuery\0" + "glEndQuery\0" + "glGetQueryiv\0" + "glGetQueryObjectiv\0" + "glGetQueryObjectuiv\0" + "glPointParameterfARB\0" + "glPointParameterfvARB\0" + "glWindowPos2dARB\0" + "glWindowPos2fARB\0" + "glWindowPos2iARB\0" + "glWindowPos2sARB\0" + "glWindowPos2dvARB\0" + "glWindowPos2fvARB\0" + "glWindowPos2ivARB\0" + "glWindowPos2svARB\0" + "glWindowPos3dARB\0" + "glWindowPos3fARB\0" + "glWindowPos3iARB\0" + "glWindowPos3sARB\0" + "glWindowPos3dvARB\0" + "glWindowPos3fvARB\0" + "glWindowPos3ivARB\0" + "glWindowPos3svARB\0" + "glVertexAttrib1sARB\0" + "glVertexAttrib1fARB\0" + "glVertexAttrib1dARB\0" + "glVertexAttrib2sARB\0" + "glVertexAttrib2fARB\0" + "glVertexAttrib2dARB\0" + "glVertexAttrib3sARB\0" + "glVertexAttrib3fARB\0" + "glVertexAttrib3dARB\0" + "glVertexAttrib4sARB\0" + "glVertexAttrib4fARB\0" + "glVertexAttrib4dARB\0" + "glVertexAttrib4NubARB\0" + "glVertexAttrib1svARB\0" + "glVertexAttrib1fvARB\0" + "glVertexAttrib1dvARB\0" + "glVertexAttrib2svARB\0" + "glVertexAttrib2fvARB\0" + "glVertexAttrib2dvARB\0" + "glVertexAttrib3svARB\0" + "glVertexAttrib3fvARB\0" + "glVertexAttrib3dvARB\0" + "glVertexAttrib4svARB\0" + "glVertexAttrib4fvARB\0" + "glVertexAttrib4dvARB\0" + "glVertexAttrib4NubvARB\0" + "glBindProgramARB\0" + "glDeleteProgramsARB\0" + "glGenProgramsARB\0" + "glIsProgramARB\0" + "glGetVertexAttribdvARB\0" + "glGetVertexAttribfvARB\0" + "glGetVertexAttribivARB\0" + "glGetVertexAttribPointervARB\0" + "glBlendColorEXT\0" + "glTexImage3DEXT\0" + "glTexSubImage3DEXT\0" + "glTexSubImage1DEXT\0" + "glTexSubImage2DEXT\0" + "glCopyTexImage1DEXT\0" + "glCopyTexImage2DEXT\0" + "glCopyTexSubImage1DEXT\0" + "glCopyTexSubImage2DEXT\0" + "glCopyTexSubImage3DEXT\0" + "glHistogramEXT\0" + "glMinmaxEXT\0" + "glResetHistogramEXT\0" + "glResetMinmaxEXT\0" + "glConvolutionFilter1DEXT\0" + "glConvolutionFilter2DEXT\0" + "glConvolutionParameterfEXT\0" + "glConvolutionParameterfvEXT\0" + "glConvolutionParameteriEXT\0" + "glConvolutionParameterivEXT\0" + "glCopyConvolutionFilter1DEXT\0" + "glCopyConvolutionFilter2DEXT\0" + "glSeparableFilter2DEXT\0" + "glColorTableSGI\0" + "glColorTableParameterfvSGI\0" + "glColorTableParameterivSGI\0" + "glCopyColorTableSGI\0" + "glBindTextureEXT\0" + "glDeleteTexturesEXT\0" + "glPrioritizeTexturesEXT\0" + "glArrayElementEXT\0" + "glDrawArraysEXT\0" + "glGetPointervEXT\0" + "glBlendEquationEXT\0" + "glColorSubTableEXT\0" + "glCopyColorSubTableEXT\0" + "glColorTableEXT\0" + "glDrawRangeElementsEXT\0" + "glSampleMaskEXT\0" + "glSamplePatternEXT\0" + "glBlendEquationSeparateATI\0" + "glBlendFuncSeparateINGR\0" + "glPointParameterfSGIS\0" + "glPointParameterfvSGIS\0" + ; static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 0, glNewList, _gloffset_NewList ), @@ -1883,7 +1883,7 @@ NAME_FUNC_OFFSET( 16324, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ), NAME_FUNC_OFFSET( 16348, glPointParameterfSGIS, _gloffset_PointParameterfEXT ), NAME_FUNC_OFFSET( 16370, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ), - NAME_FUNC_OFFSET( -1, NULL, -1 ) + NAME_FUNC_OFFSET( -1, NULL, 0 ) }; #undef NAME_FUNC_OFFSET diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glsparcasm.py x11r682/xc/extras/Mesa/src/mesa/glapi/glsparcasm.py --- xc/extras/Mesa/src/mesa/glapi/glsparcasm.py 2004-06-16 11:19:06.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glsparcasm.py 2004-12-15 02:51:02.000000000 +0100 @@ -109,7 +109,7 @@ print '.globl gl%s' % (name) print '.type gl%s,#function' % (name) print 'gl%s:' % (name) - print '#if defined(__sparc_v9__) && !defined(__linux__)' + print '#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__)))' print '\tsethi\t%hi(0x00000000), %g2' print '\tsethi\t%hi(0x00000000), %g1' print '\tor\t%g2, %lo(0x00000000), %g2' diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/glapi/glthread.h x11r682/xc/extras/Mesa/src/mesa/glapi/glthread.h --- xc/extras/Mesa/src/mesa/glapi/glthread.h 2004-08-28 06:27:56.000000000 +0200 +++ xc/extras/Mesa/src/mesa/glapi/glthread.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 6.2.1 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2003 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"), @@ -194,7 +193,7 @@ * We wrap it again for GL. */ #ifdef XTHREADS -#include "Xthreads.h" +#include typedef struct { xthread_key_t key; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/Makefile.BeOS-R5 x11r682/xc/extras/Mesa/src/mesa/main/Makefile.BeOS-R5 --- xc/extras/Mesa/src/mesa/main/Makefile.BeOS-R5 1970-01-01 01:00:00.000000000 +0100 +++ xc/extras/Mesa/src/mesa/main/Makefile.BeOS-R5 2004-12-15 02:51:02.000000000 +0100 @@ -0,0 +1,453 @@ +# Mesa 3-D graphics library +# Version: 5.1 +# +# Copyright (C) 1995-2003 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. +# +# BeOS driver makefile v1.0 for Mesa 4.1 +# +# Copyright (C) 2002 - Philippe Houdoin +# Email : philippe.houdoin@free.fr +# Web : http://philippe.houdoin.free.fr/phil/beos/index-en.html +# +# ------------------------------------------------------------------- + +## BeOS Generic Makefile v2.0 ## + +## Fill in this file to specify the project being created, and the referenced +## makefile-engine will do all of the hard work for you. This handles both +## Intel and PowerPC builds of the BeOS. + +## Application Specific Settings --------------------------------------------- + +# specify the name of the binary +NAME= libGL.so + +# specify the type of binary +# APP: Application +# SHARED: Shared library or add-on +# STATIC: Static library archive +# DRIVER: Kernel Driver +TYPE= SHARED + +# specify the source files to use +# full paths or paths relative to the makefile can be included +# all files, regardless of directory, will have their object +# files created in the common object directory. +# Note that this means this makefile will not work correctly +# if two source files with the same name (source.c or source.cpp) +# are included from different directories. Also note that spaces +# in folder names do not work well with this makefile. + +MESA_CORE_SRCS = \ + api_arrayelt.c \ + api_loopback.c \ + api_noop.c \ + api_validate.c \ + accum.c \ + arbprogram.c \ + attrib.c \ + blend.c \ + bufferobj.c \ + buffers.c \ + clip.c \ + colortab.c \ + context.c \ + convolve.c \ + debug.c \ + depth.c \ + dispatch.c \ + dlist.c \ + drawpix.c \ + enable.c \ + enums.c \ + eval.c \ + extensions.c \ + feedback.c \ + fog.c \ + get.c \ + glapi.c \ + glthread.c \ + hash.c \ + hint.c \ + histogram.c \ + image.c \ + imports.c \ + light.c \ + lines.c \ + matrix.c \ + pixel.c \ + points.c \ + polygon.c \ + rastpos.c \ + state.c \ + stencil.c \ + texcompress.c \ + texcompress_fxt1.c \ + texcompress_s3tc.c \ + texformat.c \ + teximage.c \ + texobj.c \ + texstate.c \ + texstore.c \ + varray.c \ + vpexec.c \ + vpparse.c \ + vpstate.c \ + vtxfmt.c \ + math/m_debug_clip.c \ + math/m_debug_norm.c \ + math/m_debug_xform.c \ + math/m_eval.c \ + math/m_matrix.c \ + math/m_translate.c \ + math/m_vector.c \ + math/m_xform.c \ + array_cache/ac_context.c \ + array_cache/ac_import.c \ + swrast/s_aaline.c \ + swrast/s_aatriangle.c \ + swrast/s_accum.c \ + swrast/s_alpha.c \ + swrast/s_alphabuf.c \ + swrast/s_bitmap.c \ + swrast/s_blend.c \ + swrast/s_buffers.c \ + swrast/s_copypix.c \ + swrast/s_context.c \ + swrast/s_depth.c \ + swrast/s_drawpix.c \ + swrast/s_feedback.c \ + swrast/s_fog.c \ + swrast/s_imaging.c \ + swrast/s_lines.c \ + swrast/s_logic.c \ + swrast/s_masking.c \ + swrast/s_pixeltex.c \ + swrast/s_points.c \ + swrast/s_readpix.c \ + swrast/s_span.c \ + swrast/s_stencil.c \ + swrast/s_texture.c \ + swrast/s_texstore.c \ + swrast/s_triangle.c \ + swrast/s_zoom.c \ + swrast_setup/ss_context.c \ + swrast_setup/ss_triangle.c \ + swrast_setup/ss_vb.c \ + tnl/t_array_api.c \ + tnl/t_array_import.c \ + tnl/t_context.c \ + tnl/t_eval_api.c \ + tnl/t_imm_alloc.c \ + tnl/t_imm_api.c \ + tnl/t_imm_debug.c \ + tnl/t_imm_dlist.c \ + tnl/t_imm_elt.c \ + tnl/t_imm_eval.c \ + tnl/t_imm_exec.c \ + tnl/t_imm_fixup.c \ + tnl/t_pipeline.c \ + tnl/t_vb_fog.c \ + tnl/t_vb_light.c \ + tnl/t_vb_normals.c \ + tnl/t_vb_points.c \ + tnl/t_vb_program.c \ + tnl/t_vb_render.c \ + tnl/t_vb_texgen.c \ + tnl/t_vb_texmat.c \ + tnl/t_vb_vertex.c + +MESA_BEOS_DRIVER_SRCS = \ + BeOS/GLView.cpp + +MESA_X86_SRCS = \ + X86/x86.c \ + X86/glapi_x86.S \ + X86/common_x86.c \ + X86/common_x86_asm.S \ + X86/x86_xform2.S \ + X86/x86_xform3.S \ + X86/x86_xform4.S \ + X86/x86_cliptest.S + +MESA_MMX_SRCS = \ + X86/mmx_blend.S + +MESA_SSE_SRCS = \ + X86/sse.c \ + X86/sse_xform2.S \ + X86/sse_xform3.S \ + X86/sse_xform4.S \ + X86/sse_normal.S + +MESA_3DNOW_SRCS = \ + X86/3dnow.c \ + X86/3dnow_normal.S \ + X86/3dnow_xform1.S \ + X86/3dnow_xform2.S \ + X86/3dnow_xform3.S \ + X86/3dnow_xform4.S + +MESA_DEFINES = +# To use GAS assembler, uncomment this line instead: +MESA_DEFINES += GNU_ASSEMBLER +# To use NASM assembler, uncomment this line instead: +# MESA_DEFINES += NASM_ASSEMBLER +# To build a DEBUG version of Mesa, uncomment this line instead: +# MESA_DEFINES += DEBUG + +# x86-optimized code +MACHINE=$(shell uname -m) +ifeq ($(MACHINE), BePC) + HAVE_MMX = 1 + HAVE_SSE = 1 + HAVE_3DNOW = 1 +else + # No assembly optimization for PowerPC... + # HAVE_ALTIVEC=1 +endif + +ifdef HAVE_MMX + MESA_X86_SRCS += $(MESA_MMX_SRCS) + MESA_DEFINES += USE_MMX_ASM + HAVE_X86 = 1 +endif +ifdef HAVE_SSE + MESA_X86_SRCS += $(MESA_SSE_SRCS) + MESA_DEFINES += USE_SSE_ASM + HAVE_X86 = 1 +endif +ifdef HAVE_3DNOW + MESA_X86_SRCS += $(MESA_3DNOW_SRCS) + MESA_DEFINES += USE_3DNOW_ASM + HAVE_X86 = 1 +endif +ifdef HAVE_X86 + MESA_DEFINES += USE_X86_ASM +else + MESA_X86_SRCS = +endif + +# FIXME: SI-GLU version support currently broken +# USE_SI_GLU=1 +ifdef USE_SI_GLU + GLU_SRCS = \ + ../si-glu/libutil/error.c \ + ../si-glu/libutil/glue.c \ + ../si-glu/libutil/mipmap.c \ + ../si-glu/libutil/project.c \ + ../si-glu/libutil/quad.c \ + ../si-glu/libutil/registry.c \ + ../si-glu/libtess/dict.c \ + ../si-glu/libtess/geom.c \ + ../si-glu/libtess/memalloc.c \ + ../si-glu/libtess/mesh.c \ + ../si-glu/libtess/normal.c \ + ../si-glu/libtess/priorityq.c \ + ../si-glu/libtess/render.c \ + ../si-glu/libtess/sweep.c \ + ../si-glu/libtess/tess.c \ + ../si-glu/libtess/tessmono.c \ + ../si-glu/libnurbs/interface/bezierEval.cc \ + ../si-glu/libnurbs/interface/bezierPatch.cc \ + ../si-glu/libnurbs/interface/bezierPatchMesh.cc \ + ../si-glu/libnurbs/interface/glcurveval.cc \ + ../si-glu/libnurbs/interface/glinterface.cc \ + ../si-glu/libnurbs/interface/glrenderer.cc \ + ../si-glu/libnurbs/interface/glsurfeval.cc \ + ../si-glu/libnurbs/interface/incurveeval.cc \ + ../si-glu/libnurbs/interface/insurfeval.cc \ + ../si-glu/libnurbs/internals/arc.cc \ + ../si-glu/libnurbs/internals/arcsorter.cc \ + ../si-glu/libnurbs/internals/arctess.cc \ + ../si-glu/libnurbs/internals/backend.cc \ + ../si-glu/libnurbs/internals/basiccrveval.cc \ + ../si-glu/libnurbs/internals/basicsurfeval.cc \ + ../si-glu/libnurbs/internals/bin.cc \ + ../si-glu/libnurbs/internals/bufpool.cc \ + ../si-glu/libnurbs/internals/cachingeval.cc \ + ../si-glu/libnurbs/internals/ccw.cc \ + ../si-glu/libnurbs/internals/coveandtiler.cc \ + ../si-glu/libnurbs/internals/curve.cc \ + ../si-glu/libnurbs/internals/curvelist.cc \ + ../si-glu/libnurbs/internals/curvesub.cc \ + ../si-glu/libnurbs/internals/dataTransform.cc \ + ../si-glu/libnurbs/internals/displaylist.cc \ + ../si-glu/libnurbs/internals/flist.cc \ + ../si-glu/libnurbs/internals/flistsorter.cc \ + ../si-glu/libnurbs/internals/hull.cc \ + ../si-glu/libnurbs/internals/intersect.cc \ + ../si-glu/libnurbs/internals/knotvector.cc \ + ../si-glu/libnurbs/internals/mapdesc.cc \ + ../si-glu/libnurbs/internals/mapdescv.cc \ + ../si-glu/libnurbs/internals/maplist.cc \ + ../si-glu/libnurbs/internals/mesher.cc \ + ../si-glu/libnurbs/internals/monoTriangulationBackend.cc \ + ../si-glu/libnurbs/internals/monotonizer.cc \ + ../si-glu/libnurbs/internals/mycode.cc \ + ../si-glu/libnurbs/internals/nurbsinterfac.cc \ + ../si-glu/libnurbs/internals/nurbstess.cc \ + ../si-glu/libnurbs/internals/patch.cc \ + ../si-glu/libnurbs/internals/patchlist.cc \ + ../si-glu/libnurbs/internals/quilt.cc \ + ../si-glu/libnurbs/internals/reader.cc \ + ../si-glu/libnurbs/internals/renderhints.cc \ + ../si-glu/libnurbs/internals/slicer.cc \ + ../si-glu/libnurbs/internals/sorter.cc \ + ../si-glu/libnurbs/internals/splitarcs.cc \ + ../si-glu/libnurbs/internals/subdivider.cc \ + ../si-glu/libnurbs/internals/tobezier.cc \ + ../si-glu/libnurbs/internals/trimline.cc \ + ../si-glu/libnurbs/internals/trimregion.cc \ + ../si-glu/libnurbs/internals/trimvertpool.cc \ + ../si-glu/libnurbs/internals/uarray.cc \ + ../si-glu/libnurbs/internals/varray.cc \ + ../si-glu/libnurbs/nurbtess/directedLine.cc \ + ../si-glu/libnurbs/nurbtess/gridWrap.cc \ + ../si-glu/libnurbs/nurbtess/monoChain.cc \ + ../si-glu/libnurbs/nurbtess/monoPolyPart.cc \ + ../si-glu/libnurbs/nurbtess/monoTriangulation.cc \ + ../si-glu/libnurbs/nurbtess/partitionX.cc \ + ../si-glu/libnurbs/nurbtess/partitionY.cc \ + ../si-glu/libnurbs/nurbtess/polyDBG.cc \ + ../si-glu/libnurbs/nurbtess/polyUtil.cc \ + ../si-glu/libnurbs/nurbtess/primitiveStream.cc \ + ../si-glu/libnurbs/nurbtess/quicksort.cc \ + ../si-glu/libnurbs/nurbtess/rectBlock.cc \ + ../si-glu/libnurbs/nurbtess/sampleComp.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompBot.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompRight.cc \ + ../si-glu/libnurbs/nurbtess/sampleCompTop.cc \ + ../si-glu/libnurbs/nurbtess/sampleMonoPoly.cc \ + ../si-glu/libnurbs/nurbtess/sampledLine.cc \ + ../si-glu/libnurbs/nurbtess/searchTree.cc +else + GLU_SRCS = \ + ../src-glu/glu.c \ + ../src-glu/mipmap.c \ + ../src-glu/project.c \ + ../src-glu/quadric.c \ + ../src-glu/tess.c \ + ../src-glu/tesselat.c \ + ../src-glu/polytest.c \ + ../src-glu/nurbs.c \ + ../src-glu/nurbscrv.c \ + ../src-glu/nurbssrf.c \ + ../src-glu/nurbsutl.c +endif + +SRCS = $(MESA_CORE_SRCS) $(MESA_X86_SRCS) $(GLU_SRCS) $(MESA_BEOS_DRIVER_SRCS) + +# specify the resource files to use +# full path or a relative path to the resource file can be used. +RSRCS = + +# specify additional libraries to link against +# there are two acceptable forms of library specifications +# - if your library follows the naming pattern of: +# libXXX.so or libXXX.a you can simply specify XXX +# library: libbe.so entry: be +# +# - if your library does not follow the standard library +# naming scheme you need to specify the path to the library +# and it's name +# library: my_lib.a entry: my_lib.a or path/my_lib.a +LIBS = be + +# specify additional paths to directories following the standard +# libXXX.so or libXXX.a naming scheme. You can specify full paths +# or paths relative to the makefile. The paths included may not +# be recursive, so include all of the paths where libraries can +# be found. Directories where source files are found are +# automatically included. +LIBPATHS = + +# additional paths to look for system headers +# thes use the form: #include
      +# source file directories are NOT auto-included here +SYSTEM_INCLUDE_PATHS = ../include +ifdef USE_SI_GLU + SYSTEM_INCLUDE_PATHS += ../si-glu/include +endif + +# additional paths to look for local headers +# thes use the form: #include "header" +# source file directories are automatically included +LOCAL_INCLUDE_PATHS = + +# specify the level of optimization that you desire +# NONE, SOME, FULL +OPTIMIZE = FULL + +# specify any preprocessor symbols to be defined. The symbols +# will be set to a value of 1. For example specify DEBUG if you want +# DEBUG=1 to be set when compiling. +DEFINES = $(MESA_DEFINES) + +# specify special warning levels +# if unspecified default warnings will be used +# NONE = suppress all warnings +# ALL = enable all warnings +WARNINGS = ALL + +# specify whether image symbols will be created +# so that stack crawls in the debugger are meaningful +# if TRUE symbols will be created +SYMBOLS = TRUE + +# specify debug settings +# if TRUE will allow application to be run from +# a source-level debugger +# DEBUGGER = TRUE +DEBUGGER = FALSE + +# specify additional compiler flags for all files +COMPILER_FLAGS = + +# specify additional linker flags +LINKER_FLAGS = + + + +## include the makefile-engine +include /boot/develop/etc/makefile-engine + + + +# X86/matypes.h include file is *generated*! +# Rules to (re)generate it as needed: + +X86/common_x86_asm.S : X86/matypes.h + +X86/matypes.h : X86/gen_matypes.c + @echo "(Re-)Generating $@ ..." + $(CC) $< $(INCLUDES) $(CFLAGS) -o X86/gen_matypes + X86/gen_matypes > $@ + rm -f X86/gen_matypes + +## Add NASM support for assembly code compilation... +# $(OBJ_DIR)/%.o : %.nasm +# nasm -f elf $(MESA_DEFINES) -o $@ $< + +$(OBJ_DIR)/%.o : %.S + gcc -c $< $(INCLUDES) $(CFLAGS) -o $@ +# gcc $(INCLUDES) $(CFLAGS) -E $< | grep -v '^$$' > $(addsuffix .nasm, $(basename $<)) +# nasm -f elf $(MESA_DEFINES) -o $@ $(addsuffix .nasm, $(basename $<)) + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/api_arrayelt.c x11r682/xc/extras/Mesa/src/mesa/main/api_arrayelt.c --- xc/extras/Mesa/src/mesa/main/api_arrayelt.c 2004-06-16 11:19:08.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/api_arrayelt.c 2004-12-15 02:51:02.000000000 +0100 @@ -64,79 +64,274 @@ */ #define TYPE_IDX(t) ( (t) == GL_DOUBLE ? 7 : (t) & 7 ) +static void GLAPIENTRY Color3bv(const GLbyte *v) +{ + GL_CALL(Color3bv)(v); +} + +static void GLAPIENTRY Color3ubv(const GLubyte *v) +{ + GL_CALL(Color3ubv)(v); +} + +static void GLAPIENTRY Color3sv(const GLshort *v) +{ + GL_CALL(Color3sv)(v); +} + +static void GLAPIENTRY Color3usv(const GLushort *v) +{ + GL_CALL(Color3usv)(v); +} + +static void GLAPIENTRY Color3iv(const GLint *v) +{ + GL_CALL(Color3iv)(v); +} + +static void GLAPIENTRY Color3uiv(const GLuint *v) +{ + GL_CALL(Color3uiv)(v); +} + +static void GLAPIENTRY Color3fv(const GLfloat *v) +{ + GL_CALL(Color3fv)(v); +} + +static void GLAPIENTRY Color3dv(const GLdouble *v) +{ + GL_CALL(Color3dv)(v); +} + +static void GLAPIENTRY Color4bv(const GLbyte *v) +{ + GL_CALL(Color4bv)(v); +} + +static void GLAPIENTRY Color4ubv(const GLubyte *v) +{ + GL_CALL(Color4ubv)(v); +} + +static void GLAPIENTRY Color4sv(const GLshort *v) +{ + GL_CALL(Color4sv)(v); +} -static array_func ColorFuncs[2][8] = { - { (array_func)glColor3bv, - (array_func)glColor3ubv, - (array_func)glColor3sv, - (array_func)glColor3usv, - (array_func)glColor3iv, - (array_func)glColor3uiv, - (array_func)glColor3fv, - (array_func)glColor3dv }, - - { (array_func)glColor4bv, - (array_func)glColor4ubv, - (array_func)glColor4sv, - (array_func)glColor4usv, - (array_func)glColor4iv, - (array_func)glColor4uiv, - (array_func)glColor4fv, - (array_func)glColor4dv } +static void GLAPIENTRY Color4usv(const GLushort *v) +{ + GL_CALL(Color4usv)(v); +} + +static void GLAPIENTRY Color4iv(const GLint *v) +{ + GL_CALL(Color4iv)(v); +} + +static void GLAPIENTRY Color4uiv(const GLuint *v) +{ + GL_CALL(Color4uiv)(v); +} + +static void GLAPIENTRY Color4fv(const GLfloat *v) +{ + GL_CALL(Color4fv)(v); +} + +static void GLAPIENTRY Color4dv(const GLdouble *v) +{ + GL_CALL(Color4dv)(v); +} + +static const array_func ColorFuncs[2][8] = { + { + (array_func) Color3bv, + (array_func) Color3ubv, + (array_func) Color3sv, + (array_func) Color3usv, + (array_func) Color3iv, + (array_func) Color3uiv, + (array_func) Color3fv, + (array_func) Color3dv, + }, + { + (array_func) Color4bv, + (array_func) Color4ubv, + (array_func) Color4sv, + (array_func) Color4usv, + (array_func) Color4iv, + (array_func) Color4uiv, + (array_func) Color4fv, + (array_func) Color4dv, + }, }; -static array_func VertexFuncs[3][8] = { - { 0, - 0, - (array_func)glVertex2sv, - 0, - (array_func)glVertex2iv, - 0, - (array_func)glVertex2fv, - (array_func)glVertex2dv }, - - { 0, - 0, - (array_func)glVertex3sv, - 0, - (array_func)glVertex3iv, - 0, - (array_func)glVertex3fv, - (array_func)glVertex3dv }, - - { 0, - 0, - (array_func)glVertex4sv, - 0, - (array_func)glVertex4iv, - 0, - (array_func)glVertex4fv, - (array_func)glVertex4dv } +static void GLAPIENTRY Vertex2sv(const GLshort *v) +{ + GL_CALL(Vertex2sv)(v); +} + +static void GLAPIENTRY Vertex2iv(const GLint *v) +{ + GL_CALL(Vertex2iv)(v); +} + +static void GLAPIENTRY Vertex2fv(const GLfloat *v) +{ + GL_CALL(Vertex2fv)(v); +} + +static void GLAPIENTRY Vertex2dv(const GLdouble *v) +{ + GL_CALL(Vertex2dv)(v); +} + +static void GLAPIENTRY Vertex3sv(const GLshort *v) +{ + GL_CALL(Vertex3sv)(v); +} + +static void GLAPIENTRY Vertex3iv(const GLint *v) +{ + GL_CALL(Vertex3iv)(v); +} + +static void GLAPIENTRY Vertex3fv(const GLfloat *v) +{ + GL_CALL(Vertex3fv)(v); +} + +static void GLAPIENTRY Vertex3dv(const GLdouble *v) +{ + GL_CALL(Vertex3dv)(v); +} + +static void GLAPIENTRY Vertex4sv(const GLshort *v) +{ + GL_CALL(Vertex4sv)(v); +} + +static void GLAPIENTRY Vertex4iv(const GLint *v) +{ + GL_CALL(Vertex4iv)(v); +} + +static void GLAPIENTRY Vertex4fv(const GLfloat *v) +{ + GL_CALL(Vertex4fv)(v); +} + +static void GLAPIENTRY Vertex4dv(const GLdouble *v) +{ + GL_CALL(Vertex4dv)(v); +} + +static const array_func VertexFuncs[3][8] = { + { + 0, + 0, + (array_func) Vertex2sv, + 0, + (array_func) Vertex2iv, + 0, + (array_func) Vertex2fv, + (array_func) Vertex2dv, + }, + { + 0, + 0, + (array_func) Vertex3sv, + 0, + (array_func) Vertex3iv, + 0, + (array_func) Vertex3fv, + (array_func) Vertex3dv, + }, + { + 0, + 0, + (array_func) Vertex4sv, + 0, + (array_func) Vertex4iv, + 0, + (array_func) Vertex4fv, + (array_func) Vertex4dv, + }, }; -static array_func IndexFuncs[8] = { +static void GLAPIENTRY Indexubv(const GLubyte *c) +{ + GL_CALL(Indexubv)(c); +} + +static void GLAPIENTRY Indexsv(const GLshort *c) +{ + GL_CALL(Indexsv)(c); +} + +static void GLAPIENTRY Indexiv(const GLint *c) +{ + GL_CALL(Indexiv)(c); +} + +static void GLAPIENTRY Indexfv(const GLfloat *c) +{ + GL_CALL(Indexfv)(c); +} + +static void GLAPIENTRY Indexdv(const GLdouble *c) +{ + GL_CALL(Indexdv)(c); +} + +static const array_func IndexFuncs[8] = { 0, - (array_func)glIndexubv, - (array_func)glIndexsv, + (array_func) Indexubv, + (array_func) Indexsv, 0, - (array_func)glIndexiv, + (array_func) Indexiv, 0, - (array_func)glIndexfv, - (array_func)glIndexdv + (array_func) Indexfv, + (array_func) Indexdv, }; -static array_func NormalFuncs[8] = { - (array_func)glNormal3bv, +static void GLAPIENTRY Normal3bv(const GLbyte *v) +{ + GL_CALL(Normal3bv)(v); +} + +static void GLAPIENTRY Normal3sv(const GLshort *v) +{ + GL_CALL(Normal3sv)(v); +} + +static void GLAPIENTRY Normal3iv(const GLint *v) +{ + GL_CALL(Normal3iv)(v); +} + +static void GLAPIENTRY Normal3fv(const GLfloat *v) +{ + GL_CALL(Normal3fv)(v); +} + +static void GLAPIENTRY Normal3dv(const GLdouble *v) +{ + GL_CALL(Normal3dv)(v); +} + +static const array_func NormalFuncs[8] = { + (array_func) Normal3bv, 0, - (array_func)glNormal3sv, + (array_func) Normal3sv, 0, - (array_func)glNormal3iv, + (array_func) Normal3iv, 0, - (array_func)glNormal3fv, - (array_func)glNormal3dv, + (array_func) Normal3fv, + (array_func) Normal3dv, }; - /* Wrapper functions in case glSecondaryColor*EXT doesn't exist */ static void GLAPIENTRY SecondaryColor3bvEXT(const GLbyte *c) { @@ -178,7 +373,7 @@ GL_CALL(SecondaryColor3dvEXT)(c); } -static array_func SecondaryColorFuncs[8] = { +static const array_func SecondaryColorFuncs[8] = { (array_func) SecondaryColor3bvEXT, (array_func) SecondaryColor3ubvEXT, (array_func) SecondaryColor3svEXT, @@ -201,7 +396,7 @@ GL_CALL(FogCoorddvEXT)(f); } -static array_func FogCoordFuncs[8] = { +static const array_func FogCoordFuncs[8] = { 0, 0, 0, @@ -212,7 +407,6 @@ (array_func) FogCoorddvEXT }; - /**********************************************************************/ /* GL_BYTE attributes */ @@ -549,7 +743,7 @@ /* * Array [size][type] of VertexAttrib functions */ -static attrib_func AttribFuncs[2][4][8] = { +static const attrib_func AttribFuncs[2][4][8] = { { /* non-normalized */ { @@ -646,6 +840,11 @@ } }; +static void GLAPIENTRY EdgeFlagv(const GLboolean *flag) +{ + GL_CALL(EdgeFlagv)(flag); +} + /**********************************************************************/ @@ -693,7 +892,7 @@ } if (ctx->Array.EdgeFlag.Enabled) { aa->array = &ctx->Array.EdgeFlag; - aa->func = (array_func) glEdgeFlagv; + aa->func = (array_func) EdgeFlagv; aa++; } if (ctx->Array.Normal.Enabled) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/api_loopback.c x11r682/xc/extras/Mesa/src/mesa/main/api_loopback.c --- xc/extras/Mesa/src/mesa/main/api_loopback.c 2004-06-16 11:19:08.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/api_loopback.c 2004-12-15 02:51:02.000000000 +0100 @@ -6,7 +6,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -1066,7 +1066,7 @@ static void GLAPIENTRY loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) { - ATTRIB3(index, (GLfloat) x, y, z); + ATTRIB3(index, (GLfloat) x, (GLfloat) y, (GLfloat) z); } static void GLAPIENTRY @@ -1139,7 +1139,7 @@ static void GLAPIENTRY loopback_VertexAttrib3svNV(GLuint index, const GLshort *v) { - ATTRIB2(index, (GLfloat) v[0], (GLfloat) v[1]); + ATTRIB3(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]); } static void GLAPIENTRY diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/api_noop.c x11r682/xc/extras/Mesa/src/mesa/main/api_noop.c --- xc/extras/Mesa/src/mesa/main/api_noop.c 2004-06-16 11:19:08.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/api_noop.c 2004-12-15 02:51:02.000000000 +0100 @@ -568,6 +568,7 @@ */ void GLAPIENTRY _mesa_noop_Begin( GLenum mode ) { + (void) mode; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/attrib.c x11r682/xc/extras/Mesa/src/mesa/main/attrib.c --- xc/extras/Mesa/src/mesa/main/attrib.c 2004-06-16 11:19:09.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/attrib.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -1017,6 +1017,8 @@ _mesa_set_enable(ctx, GL_POINT_SPRITE_NV,point->PointSprite); _mesa_PointParameteriNV(GL_POINT_SPRITE_R_MODE_NV, ctx->Point.SpriteRMode); + _mesa_PointParameterfEXT(GL_POINT_SPRITE_COORD_ORIGIN, + (GLfloat)ctx->Point.SpriteOrigin); } } break; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/bufferobj.c x11r682/xc/extras/Mesa/src/mesa/main/bufferobj.c --- xc/extras/Mesa/src/mesa/main/bufferobj.c 2004-06-16 11:19:09.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/bufferobj.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -113,17 +113,17 @@ } bufObj = buffer_object_get_target( ctx, target, str ); - if ( bufObj == NULL ) { + if (!bufObj || bufObj->Name == 0) { return NULL; } - if ( (GLuint)(offset + size) > bufObj->Size ) { + if ((GLuint) (offset + size) > bufObj->Size) { _mesa_error(ctx, GL_INVALID_VALUE, "%s(size + offset > buffer size)", str); return NULL; } - if ( bufObj->Pointer != NULL ) { + if (bufObj->Pointer) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s", str); return NULL; } @@ -142,6 +142,9 @@ _mesa_new_buffer_object( GLcontext *ctx, GLuint name, GLenum target ) { struct gl_buffer_object *obj; + + (void) ctx; + obj = MALLOC_STRUCT(gl_buffer_object); _mesa_initialize_buffer_object(obj, name, target); return obj; @@ -157,6 +160,8 @@ void _mesa_delete_buffer_object( GLcontext *ctx, struct gl_buffer_object *bufObj ) { + (void) ctx; + if (bufObj->Data) _mesa_free(bufObj->Data); _mesa_free(bufObj); @@ -170,6 +175,8 @@ _mesa_initialize_buffer_object( struct gl_buffer_object *obj, GLuint name, GLenum target ) { + (void) target; + _mesa_bzero(obj, sizeof(struct gl_buffer_object)); obj->RefCount = 1; obj->Name = name; @@ -231,15 +238,15 @@ { void * new_data; - (void) target; + (void) ctx; (void) target; new_data = _mesa_realloc( bufObj->Data, bufObj->Size, size ); - if ( new_data != NULL ) { + if (new_data) { bufObj->Data = (GLubyte *) new_data; bufObj->Size = size; bufObj->Usage = usage; - if ( data != NULL ) { + if (data) { _mesa_memcpy( bufObj->Data, data, size ); } } @@ -269,8 +276,9 @@ GLsizeiptrARB size, const GLvoid * data, struct gl_buffer_object * bufObj ) { - if ( (bufObj->Data != NULL) - && ((GLuint)(size + offset) <= bufObj->Size) ) { + (void) ctx; (void) target; + + if (bufObj->Data && ((GLuint) (size + offset) <= bufObj->Size)) { _mesa_memcpy( (GLubyte *) bufObj->Data + offset, data, size ); } } @@ -299,8 +307,9 @@ GLsizeiptrARB size, GLvoid * data, struct gl_buffer_object * bufObj ) { - if ( (bufObj->Data != NULL) - && ((GLuint)(size + offset) <= bufObj->Size) ) { + (void) ctx; (void) target; + + if (bufObj->Data && ((GLuint) (size + offset) <= bufObj->Size)) { _mesa_memcpy( data, (GLubyte *) bufObj->Data + offset, size ); } } @@ -326,6 +335,7 @@ _mesa_buffer_map( GLcontext *ctx, GLenum target, GLenum access, struct gl_buffer_object * bufObj ) { + (void) ctx; (void) target; (void) access; return bufObj->Data; } @@ -371,7 +381,6 @@ * glGetTexImage, etc) we call this function to check that we're not * going to read out of bounds. * - * \param ctx the rendering context * \param width width of image to read/write * \param height height of image to read/write * \param depth depth of image to read/write @@ -432,13 +441,13 @@ ASSERT_OUTSIDE_BEGIN_END(ctx); oldBufObj = buffer_object_get_target( ctx, target, "BindBufferARB" ); - if ( (oldBufObj != NULL) && (oldBufObj->Name == buffer) ) + if (oldBufObj && oldBufObj->Name == buffer) return; /* rebinding the same buffer object- no change */ /* * Get pointer to new buffer object (newBufObj) */ - if ( buffer == 0 ) { + if (buffer == 0) { /* The spec says there's not a buffer object named 0, but we use * one internally because it simplifies things. */ @@ -479,10 +488,10 @@ } /* Pass BindBuffer call to device driver */ - if ( (ctx->Driver.BindBuffer != NULL) && (newBufObj != NULL) ) + if (ctx->Driver.BindBuffer && newBufObj) (*ctx->Driver.BindBuffer)( ctx, target, newBufObj ); - if ( oldBufObj != NULL ) { + if (oldBufObj) { oldBufObj->RefCount--; assert(oldBufObj->RefCount >= 0); if (oldBufObj->RefCount == 0) { @@ -499,7 +508,7 @@ * Delete a set of buffer objects. * * \param n Number of buffer objects to delete. - * \param buffer Array of \c n buffer object IDs. + * \param ids Array of \c n buffer object IDs. */ void GLAPIENTRY _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) @@ -528,41 +537,50 @@ if (ctx->Array.Vertex.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.Vertex.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.Normal.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.Normal.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.Color.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.Color.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.SecondaryColor.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.SecondaryColor.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.FogCoord.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.FogCoord.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.Index.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.Index.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } if (ctx->Array.EdgeFlag.BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.EdgeFlag.BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } for (j = 0; j < MAX_TEXTURE_UNITS; j++) { if (ctx->Array.TexCoord[j].BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.TexCoord[j].BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } } for (j = 0; j < VERT_ATTRIB_MAX; j++) { if (ctx->Array.VertexAttrib[j].BufferObj == bufObj) { bufObj->RefCount--; ctx->Array.VertexAttrib[j].BufferObj = ctx->Array.NullBufferObj; + ctx->Array.NullBufferObj->RefCount++; } } @@ -581,8 +599,11 @@ } /* decrement refcount and delete if <= 0 */ - bufObj->DeletePending = GL_TRUE; - bufObj->RefCount--; + if (!bufObj->DeletePending) { + bufObj->DeletePending = GL_TRUE; + bufObj->RefCount--; + } + if (bufObj->RefCount <= 0) { /* buffer should not be bound anymore! */ ASSERT(ctx->Array.ArrayBufferObj != bufObj); @@ -619,7 +640,7 @@ return; } - if ( buffer == NULL ) { + if (!buffer) { return; } @@ -704,7 +725,7 @@ } bufObj = buffer_object_get_target( ctx, target, "BufferDataARB" ); - if ( bufObj == NULL ) { + if (!bufObj || bufObj->Name ==0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferDataARB" ); return; } @@ -790,19 +811,19 @@ } bufObj = buffer_object_get_target( ctx, target, "MapBufferARB" ); - if ( bufObj == NULL ) { + if (!bufObj || bufObj->Name == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glMapBufferARB" ); return NULL; } - if ( bufObj->Pointer != NULL ) { + if (bufObj->Pointer) { _mesa_error(ctx, GL_INVALID_OPERATION, "glMapBufferARB(already mapped)"); return NULL; } ASSERT(ctx->Driver.MapBuffer); bufObj->Pointer = (*ctx->Driver.MapBuffer)( ctx, target, access, bufObj ); - if ( bufObj->Pointer == NULL ) { + if (!bufObj->Pointer) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(access)"); } @@ -821,17 +842,17 @@ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); bufObj = buffer_object_get_target( ctx, target, "UnmapBufferARB" ); - if ( bufObj == NULL ) { + if (!bufObj || bufObj->Name == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glUnmapBufferARB" ); return GL_FALSE; } - if ( bufObj->Pointer == NULL ) { + if (!bufObj->Pointer) { _mesa_error(ctx, GL_INVALID_OPERATION, "glUnmapBufferARB"); return GL_FALSE; } - if ( ctx->Driver.UnmapBuffer != NULL ) { + if (ctx->Driver.UnmapBuffer) { status = (*ctx->Driver.UnmapBuffer)( ctx, target, bufObj ); } @@ -850,7 +871,7 @@ ASSERT_OUTSIDE_BEGIN_END(ctx); bufObj = buffer_object_get_target( ctx, target, "GetBufferParameterivARB" ); - if (!bufObj) { + if (!bufObj || bufObj->Name == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "GetBufferParameterivARB" ); return; } @@ -888,7 +909,7 @@ } bufObj = buffer_object_get_target( ctx, target, "GetBufferPointervARB" ); - if ( bufObj == NULL ) { + if (!bufObj || bufObj->Name == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetBufferPointervARB" ); return; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/colormac.h x11r682/xc/extras/Mesa/src/mesa/main/colormac.h --- xc/extras/Mesa/src/mesa/main/colormac.h 2004-07-22 08:53:01.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/colormac.h 2004-12-15 02:51:02.000000000 +0100 @@ -221,5 +221,7 @@ #define PACK_COLOR_233( B, G, R ) \ (((B) & 0xc0) | (((G) & 0xe0) >> 2) | (((R) & 0xe0) >> 5)) +/*@}*/ + #endif /* COLORMAC_H */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/colortab.c x11r682/xc/extras/Mesa/src/mesa/main/colortab.c --- xc/extras/Mesa/src/mesa/main/colortab.c 2004-06-16 11:19:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/colortab.c 2004-12-15 02:51:02.000000000 +0100 @@ -175,11 +175,11 @@ * Update/replace all or part of a color table. Helper function * used by _mesa_ColorTable() and _mesa_ColorSubTable(). * The table->Table buffer should already be allocated. - * \param start - first entry to update - * \param count - number of entries to update - * \param format - format of user-provided table data - * \param type - datatype of user-provided table data - * \param data - user-provided table data + * \param start first entry to update + * \param count number of entries to update + * \param format format of user-provided table data + * \param type datatype of user-provided table data + * \param data user-provided table data * \param [rgba]Scale - RGBA scale factors * \param [rgba]Bias - RGBA bias factors */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/config.h x11r682/xc/extras/Mesa/src/mesa/main/config.h --- xc/extras/Mesa/src/mesa/main/config.h 2004-06-16 11:19:20.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/config.h 2004-12-15 02:51:02.000000000 +0100 @@ -201,8 +201,6 @@ #define MAX_PROGRAM_MATRIX_STACK_DEPTH 4 /*@}*/ -/*@}*/ - /** * \name Mesa-specific parameters diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/context.c x11r682/xc/extras/Mesa/src/mesa/main/context.c --- xc/extras/Mesa/src/mesa/main/context.c 2004-08-28 06:27:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/context.c 2004-12-15 02:51:02.000000000 +0100 @@ -30,18 +30,23 @@ /** - * \mainpage Mesa Core Module + * \mainpage Mesa Main Module * - * \section CoreIntroduction Introduction + * \section MainIntroduction Introduction * - * The Mesa core module consists of all the top-level files in the src - * directory. The core module basically takes care of API dispatch, - * and OpenGL state management. - * - * For example, calls to glPolygonMode() are routed to _mesa_PolygonMode() - * which updates the state related to polygonmode. Furthermore, dirty - * state flags related to polygon mode are set and if the device driver - * implements a special routine for PolygonMode, it will be called. + * The Mesa Main module consists of all the files in the main/ directory. + * Among the features of this module are: + *
        + *
      • Structures to represent most GL state
      • + *
      • State set/get functions
      • + *
      • Display lists
      • + *
      • Texture unit, object and image handling
      • + *
      • Matrix and attribute stacks
      • + *
      + * + * Other modules are responsible for API dispatch, vertex transformation, + * point/line/triangle setup, rasterization, vertex array caching, + * vertex/fragment programs/shaders, etc. * * * \section AboutDoxygen About Doxygen @@ -192,6 +197,7 @@ _mesa_loseCurrent(__GLcontext *gc) { /* XXX unbind context from thread */ + (void) gc; return GL_TRUE; } @@ -212,6 +218,7 @@ _mesa_makeCurrent(__GLcontext *gc) { /* XXX bind context to thread */ + (void) gc; return GL_TRUE; } @@ -267,6 +274,7 @@ GLboolean _mesa_forceCurrent(__GLcontext *gc) { + (void) gc; return GL_TRUE; } @@ -302,6 +310,7 @@ _mesa_notifyDestroy(__GLcontext *gc) { /* Unbind from it. */ + (void) gc; } /** @@ -322,6 +331,7 @@ struct __GLdispatchStateRec * _mesa_dispatchExec(__GLcontext *gc) { + (void) gc; return NULL; } @@ -329,12 +339,14 @@ void _mesa_beginDispatchOverride(__GLcontext *gc) { + (void) gc; } /** No-op */ void _mesa_endDispatchOverride(__GLcontext *gc) { + (void) gc; } /** @@ -372,6 +384,8 @@ exports->dispatchExec = _mesa_dispatchExec; exports->beginDispatchOverride = _mesa_beginDispatchOverride; exports->endDispatchOverride = _mesa_endDispatchOverride; +#else + (void) exports; #endif } @@ -759,6 +773,7 @@ one_time_init( GLcontext *ctx ) { static GLboolean alreadyCalled = GL_FALSE; + (void) ctx; _glthread_LOCK_MUTEX(OneTimeLock); if (!alreadyCalled) { GLuint i; @@ -1597,7 +1612,7 @@ * \param mask bitwise OR of GL_*_BIT flags * * According to the bits specified in \p mask, copies the corresponding - * attributes from \p src into \dst. For many of the attributes a simple \c + * attributes from \p src into \p dst. For many of the attributes a simple \c * memcpy is not enough due to the existence of internal pointers in their data * structures. */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/convolve.c x11r682/xc/extras/Mesa/src/mesa/main/convolve.c --- xc/extras/Mesa/src/mesa/main/convolve.c 2004-06-16 11:19:20.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/convolve.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -834,7 +834,7 @@ } /* unpack column filter */ - _mesa_unpack_color_span_float(ctx, width, GL_RGBA, + _mesa_unpack_color_span_float(ctx, height, GL_RGBA, &ctx->Separable2D.Filter[colStart], format, type, column, &ctx->Unpack, 0); /* transferOps */ @@ -844,7 +844,7 @@ const GLfloat *scale = ctx->Pixel.ConvolutionFilterScale[2]; const GLfloat *bias = ctx->Pixel.ConvolutionFilterBias[2]; GLint i; - for (i = 0; i < width; i++) { + for (i = 0; i < height; i++) { GLfloat r = ctx->Separable2D.Filter[i * 4 + 0 + colStart]; GLfloat g = ctx->Separable2D.Filter[i * 4 + 1 + colStart]; GLfloat b = ctx->Separable2D.Filter[i * 4 + 2 + colStart]; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/debug.c x11r682/xc/extras/Mesa/src/mesa/main/debug.c --- xc/extras/Mesa/src/mesa/main/debug.c 2004-06-16 11:19:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/debug.c 2004-12-15 02:51:02.000000000 +0100 @@ -180,6 +180,8 @@ */ if (_mesa_strstr(debug, "flush")) MESA_DEBUG_FLAGS |= DEBUG_ALWAYS_FLUSH; +#else + (void) debug; #endif } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/descrip.mms x11r682/xc/extras/Mesa/src/mesa/main/descrip.mms --- xc/extras/Mesa/src/mesa/main/descrip.mms 2004-08-28 06:27:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/descrip.mms 2004-12-15 02:51:02.000000000 +0100 @@ -2,11 +2,11 @@ # contributed by Jouk Jansen joukj@hrem.stm.tudelft.nl # Last revision : 18 August 2004 -first +.first define gl [---.include.gl] define math [-.math] -include [---]mms-config. +.include [---]mms-config. ##### MACROS ##### diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/dlist.c x11r682/xc/extras/Mesa/src/mesa/main/dlist.c --- xc/extras/Mesa/src/mesa/main/dlist.c 2004-07-22 08:52:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/dlist.c 2004-12-15 02:51:02.000000000 +0100 @@ -165,6 +165,7 @@ * integer values starting at 0 is very important, see InstSize array usage) */ typedef enum { + OPCODE_INVALID = -1, /* Force signed enum */ OPCODE_ACCUM, OPCODE_ALPHA_FUNC, OPCODE_BIND_TEXTURE, @@ -7659,7 +7660,7 @@ Node *n; GLboolean done; - if (!glIsList(list)) { + if (!GL_CALL(IsList)(list)) { _mesa_printf("%u is not a display list ID\n", list); return; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/extensions.c x11r682/xc/extras/Mesa/src/mesa/main/extensions.c --- xc/extras/Mesa/src/mesa/main/extensions.c 2004-08-28 06:28:00.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/extensions.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -65,6 +65,7 @@ { OFF, "GL_MESAX_texture_float", F(ARB_texture_float) }, { OFF, "GL_ARB_texture_mirrored_repeat", F(ARB_texture_mirrored_repeat)}, { OFF, "GL_ARB_texture_non_power_of_two", F(ARB_texture_non_power_of_two)}, + { OFF, "GL_ARB_texture_rectangle", F(NV_texture_rectangle) }, { ON, "GL_ARB_transpose_matrix", F(ARB_transpose_matrix) }, { OFF, "GL_ARB_vertex_buffer_object", F(ARB_vertex_buffer_object) }, { OFF, "GL_ARB_vertex_program", F(ARB_vertex_program) }, @@ -325,7 +326,6 @@ { ctx->Extensions.ARB_occlusion_query = GL_TRUE; ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE; - ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE; ctx->Extensions.EXT_shadow_funcs = GL_TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/get.c x11r682/xc/extras/Mesa/src/mesa/main/get.c --- xc/extras/Mesa/src/mesa/main/get.c 2004-06-16 11:19:13.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/get.c 2004-12-15 02:51:02.000000000 +0100 @@ -5,7 +5,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -1390,6 +1390,10 @@ CHECK_EXTENSION_B(NV_point_sprite, pname); *params = ENUM_TO_BOOL(ctx->Point.SpriteRMode); break; + case GL_POINT_SPRITE_COORD_ORIGIN: + CHECK_EXTENSION_B(ARB_point_sprite, pname); + *params = ENUM_TO_BOOL(ctx->Point.SpriteOrigin); + break; /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: @@ -1620,6 +1624,14 @@ break; #endif +#if FEATURE_ARB_vertex_program + /* GL_NV_vertex_program and GL_ARB_fragment_program define others */ + case GL_MAX_VERTEX_ATTRIBS_ARB: + CHECK_EXTENSION_B(ARB_vertex_program, pname); + *params = (ctx->Const.MaxVertexProgramAttribs > 0) ? GL_TRUE : GL_FALSE; + break; +#endif + #if FEATURE_ARB_fragment_program case GL_FRAGMENT_PROGRAM_ARB: CHECK_EXTENSION_B(ARB_fragment_program, pname); @@ -2942,6 +2954,10 @@ CHECK_EXTENSION_D(NV_point_sprite, pname); *params = (GLdouble) ctx->Point.SpriteRMode; break; + case GL_POINT_SPRITE_COORD_ORIGIN: + CHECK_EXTENSION_D(ARB_point_sprite, pname); + *params = (GLdouble) ctx->Point.SpriteOrigin; + break; /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: @@ -3170,6 +3186,14 @@ break; #endif +#if FEATURE_ARB_vertex_program + /* GL_NV_vertex_program and GL_ARB_fragment_program define others */ + case GL_MAX_VERTEX_ATTRIBS_ARB: + CHECK_EXTENSION_D(ARB_vertex_program, pname); + *params = (GLdouble) ctx->Const.MaxVertexProgramAttribs; + break; +#endif + #if FEATURE_ARB_fragment_program case GL_FRAGMENT_PROGRAM_ARB: CHECK_EXTENSION_D(ARB_fragment_program, pname); @@ -4468,6 +4492,10 @@ CHECK_EXTENSION_F(NV_point_sprite, pname); *params = (GLfloat) ctx->Point.SpriteRMode; break; + case GL_POINT_SPRITE_COORD_ORIGIN: + CHECK_EXTENSION_F(ARB_point_sprite, pname); + *params = (GLfloat) ctx->Point.SpriteOrigin; + break; /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: @@ -4696,6 +4724,14 @@ break; #endif +#if FEATURE_ARB_vertex_program + /* GL_NV_vertex_program and GL_ARB_fragment_program define others */ + case GL_MAX_VERTEX_ATTRIBS_ARB: + CHECK_EXTENSION_F(ARB_vertex_program, pname); + *params = (GLfloat) ctx->Const.MaxVertexProgramAttribs; + break; +#endif + #if FEATURE_ARB_fragment_program case GL_FRAGMENT_PROGRAM_ARB: CHECK_EXTENSION_F(ARB_fragment_program, pname); @@ -6032,6 +6068,10 @@ CHECK_EXTENSION_I(NV_point_sprite, pname); *params = (GLint) ctx->Point.SpriteRMode; break; + case GL_POINT_SPRITE_COORD_ORIGIN: + CHECK_EXTENSION_I(ARB_point_sprite, pname); + *params = (GLint) ctx->Point.SpriteOrigin; + break; /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: @@ -6260,6 +6300,14 @@ break; #endif +#if FEATURE_ARB_vertex_program + /* GL_NV_vertex_program and GL_ARB_fragment_program define others */ + case GL_MAX_VERTEX_ATTRIBS_ARB: + CHECK_EXTENSION_I(ARB_vertex_program, pname); + *params = (GLint) ctx->Const.MaxVertexProgramAttribs; + break; +#endif + #if FEATURE_ARB_fragment_program case GL_FRAGMENT_PROGRAM_ARB: CHECK_EXTENSION_I(ARB_fragment_program, pname); @@ -6390,7 +6438,7 @@ _mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv"); return; } - *params = (GLvoid *) ctx->FragmentProgram.Callback; + *params = *(GLvoid **) &ctx->FragmentProgram.Callback; break; case GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA: if (!ctx->Extensions.MESA_program_debug) { @@ -6404,7 +6452,7 @@ _mesa_error(ctx, GL_INVALID_ENUM, "glGetPointerv"); return; } - *params = (GLvoid *) ctx->VertexProgram.Callback; + *params = *(GLvoid **) &ctx->VertexProgram.Callback; break; case GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA: if (!ctx->Extensions.MESA_program_debug) { @@ -6484,7 +6532,6 @@ ctx->Extensions.SGIS_generate_mipmap) { if (ctx->Extensions.ARB_occlusion_query && ctx->Extensions.ARB_vertex_buffer_object && - ctx->Extensions.ARB_texture_non_power_of_two && ctx->Extensions.EXT_shadow_funcs) { return (const GLubyte *) version_1_5; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/glheader.h x11r682/xc/extras/Mesa/src/mesa/main/glheader.h --- xc/extras/Mesa/src/mesa/main/glheader.h 2004-07-22 08:52:55.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/glheader.h 2004-12-15 02:51:02.000000000 +0100 @@ -20,7 +20,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -85,16 +85,18 @@ #endif #if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__)) && !defined(BUILD_FOR_SNAP) -# pragma warning( disable : 4068 ) /* unknown pragma */ -# pragma warning( disable : 4710 ) /* function 'foo' not inlined */ -# pragma warning( disable : 4711 ) /* function 'foo' selected for automatic inline expansion */ -# pragma warning( disable : 4127 ) /* conditional expression is constant */ -# if defined(MESA_MINWARN) -# pragma warning( disable : 4244 ) /* '=' : conversion from 'const double ' to 'float ', possible loss of data */ -# pragma warning( disable : 4018 ) /* '<' : signed/unsigned mismatch */ -# pragma warning( disable : 4305 ) /* '=' : truncation from 'const double ' to 'float ' */ -# pragma warning( disable : 4550 ) /* 'function' undefined; assuming extern returning int */ -# pragma warning( disable : 4761 ) /* integral size mismatch in argument; conversion supplied */ +# if !defined(__GNUC__) /* mingw environment */ +# pragma warning( disable : 4068 ) /* unknown pragma */ +# pragma warning( disable : 4710 ) /* function 'foo' not inlined */ +# pragma warning( disable : 4711 ) /* function 'foo' selected for automatic inline expansion */ +# pragma warning( disable : 4127 ) /* conditional expression is constant */ +# if defined(MESA_MINWARN) +# pragma warning( disable : 4244 ) /* '=' : conversion from 'const double ' to 'float ', possible loss of data */ +# pragma warning( disable : 4018 ) /* '<' : signed/unsigned mismatch */ +# pragma warning( disable : 4305 ) /* '=' : truncation from 'const double ' to 'float ' */ +# pragma warning( disable : 4550 ) /* 'function' undefined; assuming extern returning int */ +# pragma warning( disable : 4761 ) /* integral size mismatch in argument; conversion supplied */ +# endif # endif # if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ # define GLAPI __declspec(dllexport) @@ -211,24 +213,14 @@ #include -/* XXX temporary hack */ -#ifndef GL_PIXEL_PACK_BUFFER_EXT -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF -#endif - - -/* XXX temporary hack */ +/* XXX temporary hack - remove when glext.h is updated */ #ifndef GL_ARB_half_float_pixel #define GL_ARB_half_float_pixel 1 #define GL_HALF_FLOAT_ARB 0x140B typedef GLushort GLhalfARB; #endif - -/* XXX temporary hack */ +/* XXX temporary hack - remove when glext.h is updated */ #ifndef GL_ARB_texture_float #define GL_ARB_texture_float 1 #define GL_TEXTURE_RED_TYPE_ARB 0x9000 @@ -253,6 +245,12 @@ #define GL_LUMINANCE_ALPHA16F_ARB 0x881F #endif +/* XXX temporary hack - remove when glext.h is updated */ +#ifndef GL_POINT_SPRITE_COORD_ORIGIN +#define GL_POINT_SPRITE_COORD_ORIGIN 0x10000 +#define GL_LOWER_LEFT 0x10001 +#define GL_UPPER_LEFT 0x10002 +#endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/image.c x11r682/xc/extras/Mesa/src/mesa/main/image.c --- xc/extras/Mesa/src/mesa/main/image.c 2004-06-16 11:19:22.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/image.c 2004-12-15 02:51:02.000000000 +0100 @@ -3778,6 +3778,8 @@ GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking ) { + (void) srcPacking; + switch (srcType) { case GL_BYTE: { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/imports.c x11r682/xc/extras/Mesa/src/mesa/main/imports.c --- xc/extras/Mesa/src/mesa/main/imports.c 2004-06-16 11:19:14.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/imports.c 2004-12-15 02:51:02.000000000 +0100 @@ -32,7 +32,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2.1 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -58,6 +58,7 @@ #include "imports.h" #include "context.h" +#include "version.h" #define MAXSTRING 4000 /* for vsnprintf() */ @@ -536,7 +537,7 @@ GLhalfARB _mesa_float_to_half(float val) { - const int flt = *((int *) &val); + const int flt = *((int *) (void *) &val); const int flt_m = flt & 0x7fffff; const int flt_e = (flt >> 23) & 0xff; const int flt_s = (flt >> 31) & 0x1; @@ -662,7 +663,7 @@ } flt = (flt_s << 31) | (flt_e << 23) | flt_m; - result = *((float *) &flt); + result = *((float *) (void *) &flt); return result; } @@ -905,11 +906,11 @@ va_end( args ); #if defined(XFree86LOADER) && defined(IN_MODULE) - xf86fprintf(stderr, "Mesa implementation error: %s\n", str); - xf86fprintf(stderr, "Please report to the DRI project at dri.sourceforge.net\n"); + xf86fprintf(stderr, "Mesa %s implementation error: %s\n", MESA_VERSION_STRING, str); + xf86fprintf(stderr, "Please report at bugzilla.freedesktop.org\n"); #else - fprintf(stderr, "Mesa implementation error: %s\n", str); - fprintf(stderr, "Please report to the Mesa bug database at www.mesa3d.org\n" ); + fprintf(stderr, "Mesa %s implementation error: %s\n", MESA_VERSION_STRING, str); + fprintf(stderr, "Please report at bugzilla.freedesktop.org\n"); #endif } @@ -1004,6 +1005,7 @@ { char s[MAXSTRING]; va_list args; + (void) ctx; va_start(args, fmtString); vsnprintf(s, MAXSTRING, fmtString, args); va_end(args); @@ -1094,6 +1096,7 @@ { int r; va_list args; + (void) gc; va_start( args, fmt ); r = vsprintf( str, fmt, args ); va_end( args ); @@ -1104,6 +1107,7 @@ static void * CAPI default_fopen(__GLcontext *gc, const char *path, const char *mode) { + (void) gc; return fopen(path, mode); } @@ -1111,6 +1115,7 @@ static int CAPI default_fclose(__GLcontext *gc, void *stream) { + (void) gc; return fclose((FILE *) stream); } @@ -1120,6 +1125,7 @@ { int r; va_list args; + (void) gc; va_start( args, fmt ); r = vfprintf( (FILE *) stream, fmt, args ); va_end( args ); @@ -1132,6 +1138,7 @@ static __GLdrawablePrivate * default_GetDrawablePrivate(__GLcontext *gc) { + (void) gc; return NULL; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/imports.h x11r682/xc/extras/Mesa/src/mesa/main/imports.h --- xc/extras/Mesa/src/mesa/main/imports.h 2004-09-01 21:29:50.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/imports.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -224,7 +224,7 @@ ***/ #if defined(__i386__) || defined(__386__) || defined(__sparc__) || \ defined(__s390x__) || defined(__powerpc__) || \ - defined(__AMD64__) || defined(__amd64__) || \ + defined(__amd64__) || \ defined(ia64) || defined(__ia64__) || \ defined(__hppa__) || defined(hpux) || \ defined(__mips) || defined(_MIPS_ARCH) || \ @@ -378,7 +378,8 @@ return r; } #define IROUND(x) iround(x) -#elif defined(USE_X86_ASM) && defined(__GNUC__) && defined(__i386__) +#elif defined(USE_X86_ASM) && defined(__GNUC__) && defined(__i386__) && \ + (!defined(__BEOS__) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))) static INLINE int iround(float f) { int r; @@ -556,7 +557,7 @@ ***/ #if defined(USE_IEEE) && !defined(DEBUG) #define COPY_FLOAT( dst, src ) \ - ((fi_type *) &(dst))->i = ((fi_type *) &(src))->i + ((fi_type *) &(dst))->i = ((fi_type *) (void *) &(src))->i #else #define COPY_FLOAT( dst, src ) (dst) = (src) #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/light.c x11r682/xc/extras/Mesa/src/mesa/main/light.c --- xc/extras/Mesa/src/mesa/main/light.c 2004-06-16 11:19:14.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/light.c 2004-12-15 02:51:02.000000000 +0100 @@ -1129,6 +1129,7 @@ { const GLuint oldneedeyecoords = ctx->_NeedEyeCoords; + (void) new_state; ctx->_NeedEyeCoords = 0; if (ctx->_ForceEyeCoords || diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/macros.h x11r682/xc/extras/Mesa/src/mesa/main/macros.h --- xc/extras/Mesa/src/mesa/main/macros.h 2004-06-16 11:19:16.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/macros.h 2004-12-15 02:51:02.000000000 +0100 @@ -654,7 +654,4 @@ #define LEN_SQUARED_2FV( V ) ((V)[0]*(V)[0]+(V)[1]*(V)[1]) -/*@}*/ - - #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/mtypes.h x11r682/xc/extras/Mesa/src/mesa/main/mtypes.h --- xc/extras/Mesa/src/mesa/main/mtypes.h 2004-07-22 08:53:00.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/mtypes.h 2004-12-15 02:51:02.000000000 +0100 @@ -890,6 +890,7 @@ GLboolean PointSprite; /**< GL_NV_point_sprite / GL_NV_point_sprite */ GLboolean CoordReplace[MAX_TEXTURE_UNITS]; /**< GL_NV_point_sprite / GL_NV_point_sprite */ GLenum SpriteRMode; /**< GL_NV_point_sprite (only!) */ + GLenum SpriteOrigin; /**< GL_ARB_point_sprite */ }; @@ -1146,6 +1147,7 @@ struct gl_texture_object { _glthread_Mutex Mutex; /**< for thread safety */ GLint RefCount; /**< reference count */ + GLboolean DeletePending; /**< Has glDeleteTexture been called? */ GLuint Name; /**< an unsigned integer */ GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */ GLfloat Priority; /**< in [0,1] */ @@ -1572,10 +1574,11 @@ struct program { GLuint Id; - GLubyte *String; /* Null-terminated program text */ - GLenum Target; - GLenum Format; /* String encoding format */ + GLubyte *String; /**< Null-terminated program text */ + GLboolean DeletePending; /**< User called glDeletePrograms? */ GLint RefCount; + GLenum Target; + GLenum Format; /**< String encoding format */ GLboolean Resident; GLfloat LocalParams[MAX_PROGRAM_LOCAL_PARAMS][4]; GLuint NumInstructions; /* GL_ARB_vertex/fragment_program */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/pixel.c x11r682/xc/extras/Mesa/src/mesa/main/pixel.c --- xc/extras/Mesa/src/mesa/main/pixel.c 2004-06-16 11:19:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/pixel.c 2004-12-15 02:51:02.000000000 +0100 @@ -791,6 +791,8 @@ GLfloat rBias, GLfloat gBias, GLfloat bBias, GLfloat aBias) { + (void) ctx; + if (rScale != 1.0 || rBias != 0.0) { GLuint i; for (i = 0; i < n; i++) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/points.c x11r682/xc/extras/Mesa/src/mesa/main/points.c --- xc/extras/Mesa/src/mesa/main/points.c 2004-06-16 11:19:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/points.c 2004-12-15 02:51:02.000000000 +0100 @@ -5,9 +5,9 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.2 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * 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"), @@ -229,6 +229,25 @@ return; } break; + case GL_POINT_SPRITE_COORD_ORIGIN: + if (ctx->Extensions.ARB_point_sprite) { + GLenum value = (GLenum) params[0]; + if (value != GL_LOWER_LEFT && value != GL_UPPER_LEFT) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glPointParameterf[v]{EXT,ARB}(param)"); + return; + } + if (ctx->Point.SpriteOrigin == value) + return; + FLUSH_VERTICES(ctx, _NEW_POINT); + ctx->Point.SpriteOrigin = value; + } + else { + _mesa_error(ctx, GL_INVALID_ENUM, + "glPointParameterf[v]{EXT,ARB}(pname)"); + return; + } + break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glPointParameterf[v]{EXT,ARB}(pname)" ); @@ -266,6 +285,7 @@ ctx->Point.Threshold = 1.0; ctx->Point.PointSprite = GL_FALSE; /* GL_ARB_point_sprite / GL_NV_point_sprite */ ctx->Point.SpriteRMode = GL_ZERO; /* GL_NV_point_sprite (only!) */ + ctx->Point.SpriteOrigin = GL_UPPER_LEFT; /* GL_ARB_point_sprite */ for (i = 0; i < MAX_TEXTURE_UNITS; i++) { ctx->Point.CoordReplace[i] = GL_FALSE; /* GL_ARB_point_sprite / GL_NV_point_sprite */ } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/state.c x11r682/xc/extras/Mesa/src/mesa/main/state.c --- xc/extras/Mesa/src/mesa/main/state.c 2004-06-16 11:19:21.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/state.c 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -104,7 +104,7 @@ static int generic_noop(void) { - _mesa_problem(NULL, "User called no-op dispatch function (not part of Mesa subset?)"); + _mesa_problem(NULL, "User called no-op dispatch function (an unsupported extension function?)"); return 0; } @@ -119,10 +119,11 @@ void _mesa_init_no_op_table(struct _glapi_table *table, GLuint tableSize) { + typedef void (*func_ptr_t)(void); GLuint i; - void **dispatch = (void **) table; + func_ptr_t *dispatch = (func_ptr_t *) table; for (i = 0; i < tableSize; i++) { - dispatch[i] = (void *) generic_noop; + dispatch[i] = (func_ptr_t)generic_noop; } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texcompress.c x11r682/xc/extras/Mesa/src/mesa/main/texcompress.c --- xc/extras/Mesa/src/mesa/main/texcompress.c 2004-06-16 11:19:21.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texcompress.c 2004-12-15 02:51:02.000000000 +0100 @@ -113,6 +113,7 @@ GLuint size; ASSERT(depth == 1); + (void) depth; switch (format) { case GL_COMPRESSED_RGB_FXT1_3DFX: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texcompress_fxt1.c x11r682/xc/extras/Mesa/src/mesa/main/texcompress_fxt1.c --- xc/extras/Mesa/src/mesa/main/texcompress_fxt1.c 2004-08-28 06:28:04.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texcompress_fxt1.c 2004-12-15 02:51:02.000000000 +0100 @@ -57,6 +57,7 @@ void _mesa_init_texture_fxt1( GLcontext *ctx ) { + (void) ctx; } @@ -76,6 +77,7 @@ ASSERT(dstXoffset % 8 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGB || srcType != CHAN_TYPE || @@ -131,6 +133,7 @@ ASSERT(dstXoffset % 8 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGBA || srcType != CHAN_TYPE || @@ -174,6 +177,7 @@ fetch_texel_2d_rgba_fxt1( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) k; fxt1_decode_1(texImage->Data, texImage->Width, i, j, texel); } @@ -184,6 +188,7 @@ { /* just sample as GLchan and convert to float here */ GLchan rgba[4]; + (void) k; fxt1_decode_1(texImage->Data, texImage->Width, i, j, rgba); texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]); texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]); @@ -196,6 +201,7 @@ fetch_texel_2d_rgb_fxt1( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) k; fxt1_decode_1(texImage->Data, texImage->Width, i, j, texel); texel[ACOMP] = 255; } @@ -207,6 +213,7 @@ { /* just sample as GLchan and convert to float here */ GLchan rgba[4]; + (void) k; fxt1_decode_1(texImage->Data, texImage->Width, i, j, rgba); texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]); texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]); @@ -288,9 +295,9 @@ typedef unsigned long long Fx64; -#define FX64_MOV32(a, b) a = b; -#define FX64_OR32(a, b) a |= b; -#define FX64_SHL(a, c) a <<= c; +#define FX64_MOV32(a, b) a = b +#define FX64_OR32(a, b) a |= b +#define FX64_SHL(a, c) a <<= c #else /* !__GNUC__ */ @@ -1284,7 +1291,7 @@ } /* funky encoding for LSB of green */ - if (((lolo >> 1) & 1) != (((vec[1][GCOMP] ^ vec[0][GCOMP]) >> 2) & 1)) { + if ((int)((lolo >> 1) & 1) != (((vec[1][GCOMP] ^ vec[0][GCOMP]) >> 2) & 1)) { for (i = 0; i < n_comp; i++) { vec[1][i] = input[minColL][i]; vec[0][i] = input[maxColL][i]; @@ -1339,7 +1346,7 @@ } /* funky encoding for LSB of green */ - if (((lohi >> 1) & 1) != (((vec[3][GCOMP] ^ vec[2][GCOMP]) >> 2) & 1)) { + if ((int)((lohi >> 1) & 1) != (((vec[3][GCOMP] ^ vec[2][GCOMP]) >> 2) & 1)) { for (i = 0; i < n_comp; i++) { vec[3][i] = input[minColR][i]; vec[2][i] = input[maxColR][i]; @@ -1387,7 +1394,7 @@ } } - /* block looks like this: + /* block layout: * 00, 01, 02, 03, 08, 09, 0a, 0b * 10, 11, 12, 13, 18, 19, 1a, 1b * 04, 05, 06, 07, 0c, 0d, 0e, 0f @@ -1427,6 +1434,9 @@ } else { fxt1_quantize_CHROMA(cc, input); } + (void)fxt1_quantize_ALPHA1; + (void)fxt1_quantize_MIXED1; + (void)fxt1_quantize_MIXED0; #else if (trualpha) { fxt1_quantize_ALPHA1(cc, input); @@ -1438,6 +1448,9 @@ } else { fxt1_quantize_MIXED0(cc, input); } + (void)fxt1_quantize_ALPHA0; + (void)fxt1_quantize_HI; + (void)fxt1_quantize_CHROMA; #endif } @@ -1455,6 +1468,8 @@ unsigned long *encoded = dest; GLubyte *newSource = NULL; + (void) ctx; + /* * Rescale image if width is less than 8 or height is less than 4. */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texcompress_s3tc.c x11r682/xc/extras/Mesa/src/mesa/main/texcompress_s3tc.c --- xc/extras/Mesa/src/mesa/main/texcompress_s3tc.c 2004-06-16 11:19:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texcompress_s3tc.c 2004-12-15 02:51:02.000000000 +0100 @@ -45,6 +45,7 @@ _mesa_init_texture_s3tc( GLcontext *ctx ) { /* called during context initialization */ + (void) ctx; } @@ -64,6 +65,7 @@ ASSERT(dstXoffset % 4 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset % 4 == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGB || srcType != CHAN_TYPE || @@ -121,6 +123,7 @@ ASSERT(dstXoffset % 4 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset % 4 == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGBA || srcType != CHAN_TYPE || @@ -176,6 +179,7 @@ ASSERT(dstXoffset % 4 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset % 4 == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGBA || srcType != CHAN_TYPE || @@ -230,6 +234,7 @@ ASSERT(dstXoffset % 4 == 0); ASSERT(dstYoffset % 4 == 0); ASSERT(dstZoffset % 4 == 0); + (void) dstZoffset; (void) dstImageStride; if (srcFormat != GL_RGBA || srcType != CHAN_TYPE || @@ -272,6 +277,7 @@ fetch_texel_2d_rgb_dxt1( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) texImage; (void) i; (void) j; (void) k; (void) texel; } @@ -293,6 +299,7 @@ fetch_texel_2d_rgba_dxt1( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) texImage; (void) i; (void) j; (void) k; (void) texel; } @@ -314,6 +321,7 @@ fetch_texel_2d_rgba_dxt3( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) texImage; (void) i; (void) j; (void) k; (void) texel; } @@ -335,6 +343,7 @@ fetch_texel_2d_rgba_dxt5( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) texImage; (void) i; (void) j; (void) k; (void) texel; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texformat.c x11r682/xc/extras/Mesa/src/mesa/main/texformat.c --- xc/extras/Mesa/src/mesa/main/texformat.c 2004-06-16 11:19:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texformat.c 2004-12-15 02:51:02.000000000 +0100 @@ -63,6 +63,7 @@ static void fetch_null_texel( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLchan *texel ) { + (void) texImage; (void) i; (void) j; (void) k; texel[RCOMP] = 0; texel[GCOMP] = 0; texel[BCOMP] = 0; @@ -73,6 +74,7 @@ static void fetch_null_texelf( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat *texel ) { + (void) texImage; (void) i; (void) j; (void) k; texel[RCOMP] = 0.0; texel[GCOMP] = 0.0; texel[BCOMP] = 0.0; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texformat_tmp.h x11r682/xc/extras/Mesa/src/mesa/main/texformat_tmp.h --- xc/extras/Mesa/src/mesa/main/texformat_tmp.h 2004-06-16 11:19:16.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texformat_tmp.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -44,34 +44,46 @@ #if DIM == 1 #define CHAN_SRC( t, i, j, k, sz ) \ - ((GLchan *)(t)->Data + (i) * (sz)) + ((void) (j), (void) (k), \ + ((GLchan *)(t)->Data + (i) * (sz))) #define UBYTE_SRC( t, i, j, k, sz ) \ - ((GLubyte *)(t)->Data + (i) * (sz)) + ((void) (j), (void) (k), \ + ((GLubyte *)(t)->Data + (i) * (sz))) #define USHORT_SRC( t, i, j, k ) \ - ((GLushort *)(t)->Data + (i)) + ((void) (j), (void) (k), \ + ((GLushort *)(t)->Data + (i))) #define UINT_SRC( t, i, j, k ) \ - ((GLuint *)(t)->Data + (i)) + ((void) (j), (void) (k), \ + ((GLuint *)(t)->Data + (i))) #define FLOAT_SRC( t, i, j, k, sz ) \ - ((GLfloat *)(t)->Data + (i) * (sz)) + ((void) (j), (void) (k), \ + ((GLfloat *)(t)->Data + (i) * (sz))) #define HALF_SRC( t, i, j, k, sz ) \ - ((GLhalfARB *)(t)->Data + (i) * (sz)) + ((void) (j), (void) (k), \ + ((GLhalfARB *)(t)->Data + (i) * (sz))) #define FETCH(x) fetch_texel_1d_##x #elif DIM == 2 #define CHAN_SRC( t, i, j, k, sz ) \ - ((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) + ((void) (k), \ + ((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))) #define UBYTE_SRC( t, i, j, k, sz ) \ - ((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) + ((void) (k), \ + ((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))) #define USHORT_SRC( t, i, j, k ) \ - ((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i))) + ((void) (k), \ + ((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i)))) #define UINT_SRC( t, i, j, k ) \ - ((GLuint *)(t)->Data + ((t)->RowStride * (j) + (i))) + ((void) (k), \ + ((GLuint *)(t)->Data + ((t)->RowStride * (j) + (i)))) #define FLOAT_SRC( t, i, j, k, sz ) \ - ((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) + ((void) (k), \ + ((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))) #define HALF_SRC( t, i, j, k, sz ) \ - ((GLhalfARB *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) + ((void) (k), \ + ((GLhalfARB *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))) #define FETCH(x) fetch_texel_2d_##x @@ -1011,9 +1023,9 @@ GLint i, GLint j, GLint k, GLchan *texel ) { const GLubyte *src = UBYTE_SRC( texImage, i, j, k, 1 ); - const GLuint index = *src; const struct gl_color_table *palette; const GLchan *table; + GLuint index; GET_CURRENT_CONTEXT(ctx); if (ctx->Texture.SharedPalette) { @@ -1027,6 +1039,9 @@ ASSERT(palette->Type != GL_FLOAT); table = (const GLchan *) palette->Table; + /* Mask the index against size of palette to avoid going out of bounds */ + index = (*src) & (palette->Size - 1); + switch (palette->Format) { case GL_ALPHA: texel[RCOMP] = diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/teximage.c x11r682/xc/extras/Mesa/src/mesa/main/teximage.c --- xc/extras/Mesa/src/mesa/main/teximage.c 2004-07-22 08:52:58.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/teximage.c 2004-12-15 02:51:02.000000000 +0100 @@ -330,6 +330,9 @@ is_color_format(GLenum format) { switch (format) { + case GL_RED: + case GL_GREEN: + case GL_BLUE: case GL_ALPHA: case GL_ALPHA4: case GL_ALPHA8: @@ -481,6 +484,7 @@ static GLboolean is_compressed_format(GLcontext *ctx, GLenum internalFormat) { + (void) ctx; switch (internalFormat) { case GL_COMPRESSED_RGB_FXT1_3DFX: case GL_COMPRESSED_RGBA_FXT1_3DFX: @@ -881,11 +885,9 @@ case GL_TEXTURE_CUBE_MAP_ARB: case GL_PROXY_TEXTURE_CUBE_MAP_ARB: return ctx->Const.MaxCubeTextureLevels; - break; case GL_TEXTURE_RECTANGLE_NV: case GL_PROXY_TEXTURE_RECTANGLE_NV: return 1; - break; default: return 0; /* bad target */ } @@ -1978,6 +1980,9 @@ return; } + /* + * XXX Move this code into a new driver fall-back function + */ { const GLint width = texImage->Width; const GLint height = texImage->Height; @@ -2395,7 +2400,7 @@ texImage = _mesa_select_tex_image(ctx, texUnit, target, level); assert(texImage); - if (width == 0 || !pixels) + if (width == 0) return; /* no-op, not an error */ /* If we have a border, xoffset=-1 is legal. Bias by border width */ @@ -2442,7 +2447,7 @@ texImage = _mesa_select_tex_image(ctx, texUnit, target, level); assert(texImage); - if (width == 0 || height == 0 || !pixels) + if (width == 0 || height == 0) return; /* no-op, not an error */ /* If we have a border, xoffset=-1 is legal. Bias by border width */ @@ -2484,7 +2489,7 @@ texImage = _mesa_select_tex_image(ctx, texUnit, target, level); assert(texImage); - if (width == 0 || height == 0 || height == 0 || !pixels) + if (width == 0 || height == 0 || height == 0) return; /* no-op, not an error */ /* If we have a border, xoffset=-1 is legal. Bias by border width */ @@ -2794,6 +2799,9 @@ if (!is_compressed_format(ctx, internalFormat)) return GL_INVALID_ENUM; + if (_mesa_base_tex_format(ctx, internalFormat) < 0) + return GL_INVALID_ENUM; + if (border != 0) return GL_INVALID_VALUE; @@ -2846,6 +2854,7 @@ GLenum format, GLsizei imageSize) { GLint expectedSize, maxLevels = 0, maxTextureSize; + (void) zoffset; if (dimensions == 1) { /* 1D compressed textures not allowed */ @@ -3193,7 +3202,7 @@ return; } - if (width == 0 || !data) + if (width == 0) return; /* no-op, not an error */ if (ctx->Driver.CompressedTexSubImage1D) { @@ -3244,7 +3253,7 @@ return; } - if (width == 0 || height == 0 || !data) + if (width == 0 || height == 0) return; /* no-op, not an error */ if (ctx->Driver.CompressedTexSubImage2D) { @@ -3295,7 +3304,7 @@ return; } - if (width == 0 || height == 0 || depth == 0 || !data) + if (width == 0 || height == 0 || depth == 0) return; /* no-op, not an error */ if (ctx->Driver.CompressedTexSubImage3D) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texobj.c x11r682/xc/extras/Mesa/src/mesa/main/texobj.c --- xc/extras/Mesa/src/mesa/main/texobj.c 2004-06-16 11:19:18.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texobj.c 2004-12-15 02:51:02.000000000 +0100 @@ -5,7 +5,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -64,6 +64,7 @@ _mesa_new_texture_object( GLcontext *ctx, GLuint name, GLenum target ) { struct gl_texture_object *obj; + (void) ctx; obj = MALLOC_STRUCT(gl_texture_object); _mesa_initialize_texture_object(obj, name, target); return obj; @@ -71,7 +72,7 @@ /** - * Initialize a texture object to default values. + * Initialize a new texture object to default values. * \param obj the texture object * \param name the texture name * \param target the texture target @@ -87,9 +88,9 @@ target == GL_TEXTURE_CUBE_MAP_ARB || target == GL_TEXTURE_RECTANGLE_NV); + _mesa_bzero(obj, sizeof(*obj)); /* init the non-zero fields */ _glthread_INIT_MUTEX(obj->Mutex); - _mesa_bzero(obj, sizeof(*obj)); obj->RefCount = 1; obj->Name = name; obj->Target = target; @@ -137,8 +138,6 @@ (void) ctx; - assert(texObj); - _mesa_free_colortable_data(&texObj->Palette); /* free the texture images */ @@ -702,12 +701,16 @@ } ctx->NewState |= _NEW_TEXTURE; - /* Decrement reference count and delete if zero */ - delObj->RefCount--; - ASSERT(delObj->RefCount >= 0); + /* If user hasn't already tried to delete the texture... */ + if (!delObj->DeletePending) { + delObj->DeletePending = GL_TRUE; + delObj->RefCount--; + ASSERT(delObj->RefCount >= 0); + } + /* See if we can really delete the texture now */ if (delObj->RefCount == 0) { - ASSERT(delObj->Name != 0); + ASSERT(delObj->Name != 0); /* Never delete default tex objects */ _mesa_remove_texture_object(ctx, delObj); ASSERT(ctx->Driver.DeleteTexture); (*ctx->Driver.DeleteTexture)(ctx, delObj); @@ -717,6 +720,7 @@ } } + /** * Bind a named texture to a texturing target. * @@ -746,6 +750,9 @@ _mesa_debug(ctx, "glBindTexture %s %d\n", _mesa_lookup_enum_by_nr(target), (GLint) texName); + /* + * Get pointer to currently bound texture object (oldTexObj) + */ switch (target) { case GL_TEXTURE_1D: oldTexObj = texUnit->Current1D; @@ -776,6 +783,10 @@ } if (oldTexObj->Name == texName) + /* XXX this might be wrong. If the texobj is in use by another + * context and a texobj parameter was changed, this might be our + * only chance to update this context's hardware state. + */ return; /* rebinding the same texture- no change */ /* @@ -874,16 +885,21 @@ if (ctx->Driver.BindTexture) (*ctx->Driver.BindTexture)( ctx, target, newTexObj ); + /* Decrement the reference count on the old texture and check if it's + * time to delete it. + */ oldTexObj->RefCount--; - assert(oldTexObj->RefCount >= 0); + ASSERT(oldTexObj->RefCount >= 0); if (oldTexObj->RefCount == 0) { - assert(oldTexObj->Name != 0); + ASSERT(oldTexObj->Name != 0); + ASSERT(oldTexObj->DeletePending); _mesa_remove_texture_object(ctx, oldTexObj); ASSERT(ctx->Driver.DeleteTexture); (*ctx->Driver.DeleteTexture)( ctx, oldTexObj ); } } + /** * Set texture priorities. * diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/texstore.c x11r682/xc/extras/Mesa/src/mesa/main/texstore.c --- xc/extras/Mesa/src/mesa/main/texstore.c 2004-07-22 08:53:01.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/texstore.c 2004-12-15 02:51:02.000000000 +0100 @@ -701,6 +701,7 @@ GLboolean _mesa_texstore_depth_component_float32(STORE_PARAMS) { + (void) dims; ASSERT(dstFormat == &_mesa_texformat_depth_component_float32); ASSERT(dstFormat->TexelBytes == sizeof(GLfloat)); @@ -744,6 +745,7 @@ GLboolean _mesa_texstore_depth_component16(STORE_PARAMS) { + (void) dims; ASSERT(dstFormat == &_mesa_texformat_depth_component16); ASSERT(dstFormat->TexelBytes == sizeof(GLushort)); @@ -1103,7 +1105,7 @@ srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, srcPacking); - const GLchan *src = (const GLubyte *) tempImage; + const GLchan *src = (const GLchan *) tempImage; GLubyte *dstImage = (GLubyte *) dstAddr + dstZoffset * dstImageStride + dstYoffset * dstRowStride @@ -1207,7 +1209,7 @@ srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, srcPacking); - const GLchan *src = (const GLubyte *) tempImage; + const GLchan *src = (const GLchan *) tempImage; GLubyte *dstImage = (GLubyte *) dstAddr + dstZoffset * dstImageStride + dstYoffset * dstRowStride @@ -1553,6 +1555,7 @@ GLboolean _mesa_texstore_ci8(STORE_PARAMS) { + (void) dims; (void) baseInternalFormat; ASSERT(dstFormat == &_mesa_texformat_ci8); ASSERT(dstFormat->TexelBytes == 1); ASSERT(baseInternalFormat == GL_COLOR_INDEX); @@ -1599,6 +1602,7 @@ { const GLuint ui = 1; const GLubyte littleEndian = *((const GLubyte *) &ui); + (void) ctx; (void) dims; (void) baseInternalFormat; ASSERT((dstFormat == &_mesa_texformat_ycbcr) || (dstFormat == &_mesa_texformat_ycbcr_rev)); @@ -1852,6 +1856,7 @@ { GLint postConvWidth = width; GLint sizeInBytes; + (void) border; if (ctx->_ImageTransferState & IMAGE_CONVOLUTION_BIT) { _mesa_adjust_image_for_convolution(ctx, 1, &postConvWidth, NULL); @@ -1925,6 +1930,7 @@ { GLint postConvWidth = width, postConvHeight = height; GLint texelBytes, sizeInBytes; + (void) border; if (ctx->_ImageTransferState & IMAGE_CONVOLUTION_BIT) { _mesa_adjust_image_for_convolution(ctx, 2, &postConvWidth, @@ -2004,6 +2010,7 @@ struct gl_texture_image *texImage) { GLint texelBytes, sizeInBytes; + (void) border; /* choose the texture format */ assert(ctx->Driver.ChooseTextureFormat); @@ -2228,6 +2235,13 @@ struct gl_texture_image *texImage) { /* this space intentionally left blank */ + (void) ctx; + (void) target; (void) level; + (void) internalFormat; + (void) width; (void) border; + (void) imageSize; (void) data; + (void) texObj; + (void) texImage; } @@ -2243,6 +2257,8 @@ struct gl_texture_object *texObj, struct gl_texture_image *texImage) { + (void) width; (void) height; (void) border; + /* This is pretty simple, basically just do a memcpy without worrying * about the usual image unpacking or image transfer operations. */ @@ -2299,6 +2315,14 @@ struct gl_texture_image *texImage) { /* this space intentionally left blank */ + (void) ctx; + (void) target; (void) level; + (void) internalFormat; + (void) width; (void) height; (void) depth; + (void) border; + (void) imageSize; (void) data; + (void) texObj; + (void) texImage; } @@ -2316,6 +2340,13 @@ struct gl_texture_image *texImage) { /* this space intentionally left blank */ + (void) ctx; + (void) target; (void) level; + (void) xoffset; (void) width; + (void) format; + (void) imageSize; (void) data; + (void) texObj; + (void) texImage; } @@ -2336,6 +2367,7 @@ GLint i, rows; GLubyte *dest; const GLubyte *src; + (void) format; /* these should have been caught sooner */ ASSERT((width & 3) == 0 || width == 2 || width == 1); @@ -2389,6 +2421,14 @@ struct gl_texture_image *texImage) { /* this space intentionally left blank */ + (void) ctx; + (void) target; (void) level; + (void) xoffset; (void) yoffset; (void) zoffset; + (void) width; (void) height; (void) depth; + (void) format; + (void) imageSize; (void) data; + (void) texObj; + (void) texImage; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/varray.c x11r682/xc/extras/Mesa/src/mesa/main/varray.c --- xc/extras/Mesa/src/mesa/main/varray.c 2004-06-16 11:19:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/varray.c 2004-12-15 02:51:02.000000000 +0100 @@ -60,6 +60,7 @@ #if FEATURE_ARB_vertex_buffer_object array->BufferObj->RefCount--; if (array->BufferObj->RefCount <= 0) { + ASSERT(array->BufferObj->Name); _mesa_remove_buffer_object( ctx, array->BufferObj ); (*ctx->Driver.DeleteBuffer)( ctx, array->BufferObj ); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/version.h x11r682/xc/extras/Mesa/src/mesa/main/version.h --- xc/extras/Mesa/src/mesa/main/version.h 2004-06-16 11:19:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/version.h 2004-12-15 02:51:02.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2.1 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -29,9 +29,9 @@ /* Mesa version */ #define MESA_MAJOR 6 -#define MESA_MINOR 1 -#define MESA_PATCH 0 -#define MESA_VERSION_STRING "6.1" +#define MESA_MINOR 2 +#define MESA_PATCH 1 +#define MESA_VERSION_STRING "6.2.1" /* To make version comparison easy */ #define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/main/vtxfmt.c x11r682/xc/extras/Mesa/src/mesa/main/vtxfmt.c --- xc/extras/Mesa/src/mesa/main/vtxfmt.c 2004-06-16 11:19:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/main/vtxfmt.c 2004-12-15 02:51:02.000000000 +0100 @@ -49,6 +49,7 @@ { \ GET_CURRENT_CONTEXT(ctx); \ struct gl_tnl_module *tnl = &(ctx->TnlModule); \ + typedef void (*func_ptr_t)(void); \ \ ASSERT( tnl->Current ); \ ASSERT( tnl->SwapCount < NUM_VERTEX_FORMAT_ENTRIES ); \ @@ -56,7 +57,7 @@ /* Save the swapped function's dispatch entry so it can be */ \ /* restored later. */ \ tnl->Swapped[tnl->SwapCount][0] = (void *)&(ctx->Exec->FUNC); \ - tnl->Swapped[tnl->SwapCount][1] = (void *)TAG(FUNC); \ + *(func_ptr_t *)(tnl->Swapped[tnl->SwapCount]+1) = (func_ptr_t)TAG(FUNC); \ tnl->SwapCount++; \ \ if ( 0 ) \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/math/m_clip_tmp.h x11r682/xc/extras/Mesa/src/mesa/math/m_clip_tmp.h --- xc/extras/Mesa/src/mesa/math/m_clip_tmp.h 2004-06-16 11:19:22.000000000 +0200 +++ xc/extras/Mesa/src/mesa/math/m_clip_tmp.h 2004-12-15 02:51:03.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.2 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * 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"), @@ -129,6 +128,7 @@ GLubyte tmpAndMask = *andMask; GLubyte tmpOrMask = *orMask; GLuint i; + (void) proj_vec; STRIDE_LOOP { const GLfloat cx = from[0]; const GLfloat cy = from[1]; @@ -176,10 +176,10 @@ const GLuint stride = clip_vec->stride; const GLuint count = clip_vec->count; const GLfloat *from = (GLfloat *)clip_vec->start; - GLubyte tmpOrMask = *orMask; GLubyte tmpAndMask = *andMask; GLuint i; + (void) proj_vec; STRIDE_LOOP { const GLfloat cx = from[0], cy = from[1], cz = from[2]; GLubyte mask = 0; @@ -209,10 +209,10 @@ const GLuint stride = clip_vec->stride; const GLuint count = clip_vec->count; const GLfloat *from = (GLfloat *)clip_vec->start; - GLubyte tmpOrMask = *orMask; GLubyte tmpAndMask = *andMask; GLuint i; + (void) proj_vec; STRIDE_LOOP { const GLfloat cx = from[0], cy = from[1]; GLubyte mask = 0; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/math/m_matrix.c x11r682/xc/extras/Mesa/src/mesa/math/m_matrix.c --- xc/extras/Mesa/src/mesa/math/m_matrix.c 2004-06-16 11:19:23.000000000 +0200 +++ xc/extras/Mesa/src/mesa/math/m_matrix.c 2004-12-15 02:51:03.000000000 +0100 @@ -1,16 +1,6 @@ -/** - * \file m_matrix.c - * Matrix operations. - * - * \note - * -# 4x4 transformation matrices are stored in memory in column major order. - * -# Points/vertices are to be thought of as column vectors. - * -# Transformation of a point p by a matrix M is: p' = M * p - */ - /* * Mesa 3-D graphics library - * Version: 6.0.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -33,6 +23,17 @@ */ +/** + * \file m_matrix.c + * Matrix operations. + * + * \note + * -# 4x4 transformation matrices are stored in memory in column major order. + * -# Points/vertices are to be thought of as column vectors. + * -# Transformation of a point p by a matrix M is: p' = M * p + */ + + #include "glheader.h" #include "imports.h" #include "macros.h" @@ -1142,7 +1143,7 @@ mat->type = MATRIX_2D_NO_ROT; if ((mask & MASK_NO_2D_SCALE) != MASK_NO_2D_SCALE) - mat->flags = MAT_FLAG_GENERAL_SCALE; + mat->flags |= MAT_FLAG_GENERAL_SCALE; } else if ((mask & MASK_2D) == (GLuint) MASK_2D) { GLfloat mm = DOT2(m, m); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/math/m_matrix.h x11r682/xc/extras/Mesa/src/mesa/math/m_matrix.h --- xc/extras/Mesa/src/mesa/math/m_matrix.h 2004-06-16 11:19:23.000000000 +0200 +++ xc/extras/Mesa/src/mesa/math/m_matrix.h 2004-12-15 02:51:03.000000000 +0100 @@ -1,13 +1,8 @@ -/** - * \file math/m_matrix.h - * Defines basic structures for matrix-handling. - */ - /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 6.2 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * 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"), @@ -28,6 +23,11 @@ */ +/** + * \file math/m_matrix.h + * Defines basic structures for matrix-handling. + */ + #ifndef _M_MATRIX_H #define _M_MATRIX_H @@ -36,7 +36,7 @@ /** * \name Symbolic names to some of the entries in the matrix * - * To help out with the rework of the viewport_map as a matrix transform. + * These are handy for the viewport mapping, which is expressed as a matrix. */ /*@{*/ #define MAT_SX 0 @@ -47,29 +47,30 @@ #define MAT_TZ 14 /*@}*/ + /** * \defgroup MatFlags MAT_FLAG_XXX-flags * - * Bitmasks to indicate different kinds of 4x4 matrices in - * GLmatrix::flags + * Bitmasks to indicate different kinds of 4x4 matrices in GLmatrix::flags + * It would be nice to make all these flags private to m_matrix.c */ /*@{*/ - -#define MAT_FLAG_IDENTITY 0 /**< is an identity matrix flag. - * (Not actually used - the identity - * matrix is identified by the absense - / of all other flags.) */ -#define MAT_FLAG_GENERAL 0x1 /**< is a general matrix flag */ -#define MAT_FLAG_ROTATION 0x2 /**< is a rotation matrix flag */ -#define MAT_FLAG_TRANSLATION 0x4 /**< is a translation matrix flag */ -#define MAT_FLAG_UNIFORM_SCALE 0x8 /**< is an uniform scaling matrix flag */ -#define MAT_FLAG_GENERAL_SCALE 0x10 /**< is a general scaling matrix flag */ -#define MAT_FLAG_GENERAL_3D 0x20 /**< general 3D matrix flag */ -#define MAT_FLAG_PERSPECTIVE 0x40 /**< is a perspective projection matrix flag */ -#define MAT_FLAG_SINGULAR 0x80 /**< is a singular matrix flag */ -#define MAT_DIRTY_TYPE 0x100 /**< matrix type is dirty */ -#define MAT_DIRTY_FLAGS 0x200 /**< matrix flags are dirty */ -#define MAT_DIRTY_INVERSE 0x400 /**< matrix inverse is dirty */ +#define MAT_FLAG_IDENTITY 0 /**< is an identity matrix flag. + * (Not actually used - the identity + * matrix is identified by the absense + * of all other flags.) + */ +#define MAT_FLAG_GENERAL 0x1 /**< is a general matrix flag */ +#define MAT_FLAG_ROTATION 0x2 /**< is a rotation matrix flag */ +#define MAT_FLAG_TRANSLATION 0x4 /**< is a translation matrix flag */ +#define MAT_FLAG_UNIFORM_SCALE 0x8 /**< is an uniform scaling matrix flag */ +#define MAT_FLAG_GENERAL_SCALE 0x10 /**< is a general scaling matrix flag */ +#define MAT_FLAG_GENERAL_3D 0x20 /**< general 3D matrix flag */ +#define MAT_FLAG_PERSPECTIVE 0x40 /**< is a perspective proj matrix flag */ +#define MAT_FLAG_SINGULAR 0x80 /**< is a singular matrix flag */ +#define MAT_DIRTY_TYPE 0x100 /**< matrix type is dirty */ +#define MAT_DIRTY_FLAGS 0x200 /**< matrix flags are dirty */ +#define MAT_DIRTY_INVERSE 0x400 /**< matrix inverse is dirty */ /** angle preserving matrix flags mask */ #define MAT_FLAGS_ANGLE_PRESERVING (MAT_FLAG_ROTATION | \ @@ -120,25 +121,27 @@ /** * Different kinds of 4x4 transformation matrices. + * We use these to select specific optimized vertex transformation routines. */ enum GLmatrixtype { - MATRIX_GENERAL, /**< general 4x4 matrix */ - MATRIX_IDENTITY, /**< identity matrix */ - MATRIX_3D_NO_ROT, /**< orthogonal projection and others... */ - MATRIX_PERSPECTIVE, /**< perspective projection matrix */ - MATRIX_2D, /**< 2-D transformation */ - MATRIX_2D_NO_ROT, /**< 2-D scale & translate only */ - MATRIX_3D /**< 3-D transformation */ + MATRIX_GENERAL, /**< general 4x4 matrix */ + MATRIX_IDENTITY, /**< identity matrix */ + MATRIX_3D_NO_ROT, /**< orthogonal projection and others... */ + MATRIX_PERSPECTIVE, /**< perspective projection matrix */ + MATRIX_2D, /**< 2-D transformation */ + MATRIX_2D_NO_ROT, /**< 2-D scale & translate only */ + MATRIX_3D /**< 3-D transformation */ } ; /** - * Matrix. + * Matrix type to represent 4x4 transformation matrices. */ typedef struct { - GLfloat *m; /**< matrix, 16-byte aligned */ - GLfloat *inv; /**< optional inverse, 16-byte aligned */ + GLfloat *m; /**< 16 matrix elements (16-byte aligned) */ + GLfloat *inv; /**< optional 16-element inverse (16-byte aligned) */ GLuint flags; /**< possible values determined by (of \link - MatFlags MAT_FLAG_* flags\endlink) */ + * MatFlags MAT_FLAG_* flags\endlink) + */ enum GLmatrixtype type; } GLmatrix; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/math/m_xform_tmp.h x11r682/xc/extras/Mesa/src/mesa/math/m_xform_tmp.h --- xc/extras/Mesa/src/mesa/math/m_xform_tmp.h 2004-06-16 11:19:23.000000000 +0200 +++ xc/extras/Mesa/src/mesa/math/m_xform_tmp.h 2004-12-15 02:51:03.000000000 +0100 @@ -106,6 +106,7 @@ GLuint count = from_vec->count; GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start; GLuint i; + (void) m; if (to_vec == from_vec) return; STRIDE_LOOP { to[i][0] = from[0]; @@ -271,6 +272,7 @@ GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start; GLuint count = from_vec->count; GLuint i; + (void) m; if (to_vec == from_vec) return; STRIDE_LOOP { to[i][0] = from[0]; @@ -441,6 +443,7 @@ GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start; GLuint count = from_vec->count; GLuint i; + (void) m; if (to_vec == from_vec) return; STRIDE_LOOP { to[i][0] = from[0]; @@ -608,6 +611,7 @@ GLfloat (*to)[4] = (GLfloat (*)[4])to_vec->start; GLuint count = from_vec->count; GLuint i; + (void) m; if (to_vec == from_vec) return; STRIDE_LOOP { to[i][0] = from[0]; @@ -740,10 +744,10 @@ to_vec->count = from_vec->count; } -static transform_func _XFORMAPI TAG(transform_tab_1)[7]; -static transform_func _XFORMAPI TAG(transform_tab_2)[7]; -static transform_func _XFORMAPI TAG(transform_tab_3)[7]; -static transform_func _XFORMAPI TAG(transform_tab_4)[7]; +static transform_func TAG(transform_tab_1)[7]; +static transform_func TAG(transform_tab_2)[7]; +static transform_func TAG(transform_tab_3)[7]; +static transform_func TAG(transform_tab_4)[7]; /* Similar functions could be called several times, with more highly * optimized routines overwriting the arrays. This only occurs during diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/arbfragparse.c x11r682/xc/extras/Mesa/src/mesa/shader/arbfragparse.c --- xc/extras/Mesa/src/mesa/shader/arbfragparse.c 2004-06-16 11:17:47.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/arbfragparse.c 2004-12-15 02:51:03.000000000 +0100 @@ -186,6 +186,7 @@ { GLuint a, retval; struct arb_program ap; + (void) target; /* set the program target before parsing */ ap.Base.Target = GL_FRAGMENT_PROGRAM_ARB; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/arbprogparse.c x11r682/xc/extras/Mesa/src/mesa/shader/arbprogparse.c --- xc/extras/Mesa/src/mesa/shader/arbprogparse.c 2004-07-22 08:51:14.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/arbprogparse.c 2004-12-15 02:51:03.000000000 +0100 @@ -42,6 +42,10 @@ #include "arbprogparse.h" #include "grammar_mesa.h" +#if !defined(__GNUC__) && !defined(__extension__) +# define __extension__ +#endif + /* TODO: * Fragment Program Stuff: * ----------------------------------------------------- @@ -129,7 +133,7 @@ /** * This is the text describing the rules to parse the grammar */ -static char arb_grammar_text[] = +__extension__ static char arb_grammar_text[] = #include "arbprogram_syn.h" ; @@ -591,6 +595,7 @@ { GLubyte *i = *inst; struct var_cache *va = NULL; + (void) Program; *inst += _mesa_strlen ((char *) i) + 1; @@ -614,7 +619,8 @@ parse_string_without_adding (GLubyte ** inst, struct arb_program *Program) { GLubyte *i = *inst; - + (void) Program; + *inst += _mesa_strlen ((char *) i) + 1; return (char *) i; @@ -788,6 +794,7 @@ parse_color_type (GLcontext * ctx, GLubyte ** inst, struct arb_program *Program, GLint * color) { + (void) ctx; (void) Program; *color = *(*inst)++ != COLOR_PRIMARY; return 0; } @@ -828,7 +835,7 @@ { GLint i = parse_integer (inst, Program); - if ((i < 0) || (i >= ctx->Const.MaxTextureUnits)) { + if ((i < 0) || (i >= (int)ctx->Const.MaxTextureUnits)) { _mesa_set_program_error (ctx, Program->Position, "Invalid texture unit index"); _mesa_error (ctx, GL_INVALID_OPERATION, "Invalid texture unit index"); @@ -1890,7 +1897,7 @@ /* Test array length here! */ if (specified_length) { - if (specified_length != param_var->param_binding_length) { + if (specified_length != (int)param_var->param_binding_length) { _mesa_set_program_error (ctx, Program->Position, "Declared parameter array lenght does not match parameter list"); _mesa_error (ctx, GL_INVALID_OPERATION, @@ -2282,6 +2289,7 @@ { struct var_cache *dst; GLuint result; + (void) Index; dst = parse_string (inst, vc_head, Program, &result); Program->Position = parse_position (inst); @@ -2492,7 +2500,7 @@ offset = parse_integer (inst, Program); if ((offset < 0) - || (offset >= src->param_binding_length)) { + || (offset >= (int)src->param_binding_length)) { _mesa_set_program_error (ctx, Program->Position, "Index out of range"); _mesa_error (ctx, GL_INVALID_OPERATION, @@ -3686,7 +3694,7 @@ } /* XXX temporary */ -static char core_grammar_text[] = +__extension__ static char core_grammar_text[] = #include "grammar_syn.h" ; @@ -3706,7 +3714,7 @@ static int extension_is_supported (const GLubyte *ext) { - const GLubyte *extensions = glGetString (GL_EXTENSIONS); + const GLubyte *extensions = GL_CALL(GetString)(GL_EXTENSIONS); const GLubyte *end = extensions + _mesa_strlen ((const char *) extensions); const GLint ext_len = _mesa_strlen ((const char *) ext); @@ -3754,6 +3762,9 @@ GLubyte *strz = NULL; static int arbprogram_syn_is_ok = 0; /* XXX temporary */ + /* Reset error state */ + _mesa_set_program_error(ctx, -1, NULL); + #if DEBUG_PARSING fprintf (stderr, "Loading grammar text!\n"); #endif @@ -3827,6 +3838,8 @@ enable_ext (ctx, arbprogram_syn_id, (byte *) "fog_coord", (byte *) "GL_EXT_fog_coord") || enable_ext (ctx, arbprogram_syn_id, + (byte *) "texture_rectangle", (byte *) "GL_ARB_texture_rectangle") || + enable_ext (ctx, arbprogram_syn_id, (byte *) "texture_rectangle", (byte *) "GL_EXT_texture_rectangle") || enable_ext (ctx, arbprogram_syn_id, (byte *) "texture_rectangle", (byte *) "GL_NV_texture_rectangle") || @@ -3871,7 +3884,7 @@ if (0) { int line, col; char *s; - printf("Program: %s\n", strz); + printf("Program: %s\n", (char *) strz); printf("Error Pos: %d\n", ctx->Program.ErrorPos); s = (char *) _mesa_find_line_column(strz, strz+ctx->Program.ErrorPos, &line, &col); printf("line %d col %d: %s\n", line, col, s); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/arbprogram.c x11r682/xc/extras/Mesa/src/mesa/shader/arbprogram.c --- xc/extras/Mesa/src/mesa/shader/arbprogram.c 2004-06-16 11:17:48.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/arbprogram.c 2004-12-15 02:51:03.000000000 +0100 @@ -262,7 +262,7 @@ } ASSIGN_4V(ctx->FragmentProgram.Parameters[index], x, y, z, w); } - if (target == GL_VERTEX_PROGRAM_ARB + else if (target == GL_VERTEX_PROGRAM_ARB && ctx->Extensions.ARB_vertex_program) { if (index >= ctx->Const.MaxVertexProgramEnvParams) { _mesa_error(ctx, GL_INVALID_VALUE, "glProgramEnvParameter(index)"); @@ -322,7 +322,7 @@ } COPY_4V(params, ctx->FragmentProgram.Parameters[index]); } - if (target == GL_VERTEX_PROGRAM_ARB + else if (target == GL_VERTEX_PROGRAM_ARB && ctx->Extensions.ARB_vertex_program) { if (index >= ctx->Const.MaxVertexProgramEnvParams) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramEnvParameter(index)"); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/arbvertparse.c x11r682/xc/extras/Mesa/src/mesa/shader/arbvertparse.c --- xc/extras/Mesa/src/mesa/shader/arbvertparse.c 2004-06-16 11:17:49.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/arbvertparse.c 2004-12-15 02:51:03.000000000 +0100 @@ -175,6 +175,7 @@ { GLuint retval; struct arb_program ap; + (void) target; /* set the program target before parsing */ ap.Base.Target = GL_VERTEX_PROGRAM_ARB; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/grammar.c x11r682/xc/extras/Mesa/src/mesa/shader/grammar.c --- xc/extras/Mesa/src/mesa/shader/grammar.c 2004-07-22 08:51:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/grammar.c 2004-12-15 02:51:03.000000000 +0100 @@ -277,14 +277,14 @@ static byte *unknown = (byte *) "???"; -static void clear_last_error () +static void clear_last_error (void) { /* reset error message */ error_message = NULL; /* free error parameter - if error_param is a "???" don't free it - it's static */ if (error_param != unknown) - mem_free ((void **) &error_param); + mem_free ((void **) (void *) &error_param); else error_param = NULL; @@ -297,7 +297,7 @@ /* error message can only be set only once */ if (error_message != NULL) { - mem_free ((void **) ¶m); + mem_free ((void **) (void *) ¶m); return; } @@ -768,7 +768,7 @@ /* returns unique grammar id */ -static grammar next_valid_grammar_id () +static grammar next_valid_grammar_id (void) { static grammar id = 0; @@ -1230,7 +1230,7 @@ { if (string_grow (&p, &len, *t++)) { - mem_free ((void **) &p); + mem_free ((void **) (void *) &p); return 1; } } @@ -1379,7 +1379,7 @@ if (string_grow (&p, &len, c)) { - mem_free ((void **) &p); + mem_free ((void **) (void *) &p); return 1; } } @@ -1424,7 +1424,7 @@ } m->data = (byte) c[0]; - mem_free ((void **) &c); + mem_free ((void **) (void *) &c); } else { @@ -1502,11 +1502,11 @@ if (!str_equal ((byte *) "error", temp)) { - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); return 0; } - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); error_create (er); if (*er == NULL) @@ -1532,12 +1532,12 @@ if (map_str_find (&maps, temp, &(**er).m_text)) { - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); error_destroy (er); return 1; } - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); } /* try to extract "token" from "...$token$..." */ @@ -1558,7 +1558,7 @@ { if (string_grow (&processed, &len, '$')) { - mem_free ((void **) &processed); + mem_free ((void **) (void *) &processed); error_destroy (er); return 1; } @@ -1569,7 +1569,7 @@ { if (string_grow (&processed, &len, (**er).m_text[i])) { - mem_free ((void **) &processed); + mem_free ((void **) (void *) &processed); error_destroy (er); return 1; } @@ -1580,7 +1580,7 @@ { if (string_grow (&processed, &len, '$')) { - mem_free ((void **) &processed); + mem_free ((void **) (void *) &processed); error_destroy (er); return 1; } @@ -1591,7 +1591,7 @@ if (string_grow (&(**er).m_token_name, &tlen, '\0')) { - mem_free ((void **) &processed); + mem_free ((void **) (void *) &processed); error_destroy (er); return 1; } @@ -1603,7 +1603,7 @@ { if (string_grow (&(**er).m_token_name, &tlen, (**er).m_text[i])) { - mem_free ((void **) &processed); + mem_free ((void **) (void *) &processed); error_destroy (er); return 1; } @@ -1652,11 +1652,11 @@ dest = ed_regbyte; else { - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); return 0; } - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); emit_create (&e); if (e == NULL) @@ -1706,7 +1706,7 @@ } e->m_byte = (byte) temp[0]; - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); e->m_emit_type = et_byte; } @@ -1720,12 +1720,12 @@ if (map_byte_find (&mapb, temp, &e->m_byte)) { - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); emit_destroy (&e); return 1; } - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); e->m_emit_type = et_byte; } @@ -1819,7 +1819,7 @@ t = u; } - mem_free ((void **) &keyword); + mem_free ((void **) (void *) &keyword); } if (*t == '\'') @@ -1843,7 +1843,7 @@ if (get_string (&t, &temp2)) { - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); spec_destroy (&s); return 1; } @@ -1853,7 +1853,7 @@ s->m_byte[0] = *temp; s->m_byte[1] = *temp2; - mem_free ((void **) &temp2); + mem_free ((void **) (void *) &temp2); } else { @@ -1861,7 +1861,7 @@ *s->m_byte = *temp; } - mem_free ((void **) &temp); + mem_free ((void **) (void *) &temp); } else if (*t == '"') { @@ -1908,7 +1908,7 @@ { if (get_identifier (&t, &s->m_string)) { - mem_free ((void **) &keyword); + mem_free ((void **) (void *) &keyword); spec_destroy (&s); return 1; } @@ -1917,7 +1917,7 @@ s->m_spec_type = st_identifier_loop; } - mem_free ((void **) &keyword); + mem_free ((void **) (void *) &keyword); } else { @@ -1993,7 +1993,7 @@ r->m_oper = op_or; } - mem_free ((void **) &op); + mem_free ((void **) (void *) &op); if (get_spec (&t, &sp, maps, mapb)) { @@ -2550,7 +2550,7 @@ { map_byte *ma = NULL; - mem_free ((void **) &symbol); + mem_free ((void **) (void *) &symbol); if (get_emtcode (&text, &ma)) { @@ -2565,7 +2565,7 @@ { map_byte *ma = NULL; - mem_free ((void **) &symbol); + mem_free ((void **) (void *) &symbol); if (get_regbyte (&text, &ma)) { @@ -2580,7 +2580,7 @@ { map_str *ma = NULL; - mem_free ((void **) &symbol); + mem_free ((void **) (void *) &symbol); if (get_errtext (&text, &ma)) { @@ -2593,7 +2593,7 @@ /* .string */ else if (is_dot && str_equal (symbol, (byte *) "string")) { - mem_free ((void **) &symbol); + mem_free ((void **) (void *) &symbol); if (g->di->m_string != NULL) { @@ -2760,7 +2760,7 @@ *text = '\0'; #define APPEND_CHARACTER(x) if (dots_made == 0) {\ - if (len < size - 1) {\ + if (len < (int)size - 1) {\ text[len++] = (x); text[len] = '\0';\ } else {\ int i;\ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/nvfragprog.h x11r682/xc/extras/Mesa/src/mesa/shader/nvfragprog.h --- xc/extras/Mesa/src/mesa/shader/nvfragprog.h 2004-06-16 11:17:51.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/nvfragprog.h 2004-12-15 02:51:03.000000000 +0100 @@ -62,6 +62,7 @@ /* Fragment program instruction opcodes */ enum fp_opcode { + FP_OPCODE_INVALID = -1, /* Force signed enum */ FP_OPCODE_ABS = 1000, /* ARB_f_p only */ FP_OPCODE_ADD, FP_OPCODE_CMP, /* ARB_f_p only */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/nvprogram.c x11r682/xc/extras/Mesa/src/mesa/shader/nvprogram.c --- xc/extras/Mesa/src/mesa/shader/nvprogram.c 2004-07-22 08:51:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/nvprogram.c 2004-12-15 02:51:03.000000000 +0100 @@ -160,12 +160,12 @@ } prog = (struct program *) _mesa_HashLookup(ctx->Shared->Programs, ids[i]); - if (!prog) { _mesa_error(ctx, GL_INVALID_VALUE, "glRequestResidentProgramsNV(id)"); return; } + /* XXX this is really a hardware thing we should hook out */ prog->Resident = GL_TRUE; } } @@ -529,7 +529,7 @@ target == GL_VERTEX_STATE_PROGRAM_NV) && ctx->Extensions.NV_vertex_program) { struct vertex_program *vprog = (struct vertex_program *) prog; - if (!vprog) { + if (!vprog || prog == &_mesa_DummyProgram) { vprog = (struct vertex_program *) ctx->Driver.NewProgram(ctx, target, id); if (!vprog) { @@ -543,7 +543,7 @@ else if (target == GL_FRAGMENT_PROGRAM_NV && ctx->Extensions.NV_fragment_program) { struct fragment_program *fprog = (struct fragment_program *) prog; - if (!fprog) { + if (!fprog || prog == &_mesa_DummyProgram) { fprog = (struct fragment_program *) ctx->Driver.NewProgram(ctx, target, id); if (!fprog) { @@ -776,7 +776,7 @@ } if (len <= 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glProgramNamedParameterNV"); + _mesa_error(ctx, GL_INVALID_VALUE, "glProgramNamedParameterNV(len)"); return; } @@ -790,7 +790,7 @@ return; } - _mesa_error(ctx, GL_INVALID_VALUE, "glProgramNamedParameterNV"); + _mesa_error(ctx, GL_INVALID_VALUE, "glProgramNamedParameterNV(name)"); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/nvvertexec.c x11r682/xc/extras/Mesa/src/mesa/shader/nvvertexec.c --- xc/extras/Mesa/src/mesa/shader/nvvertexec.c 2004-07-22 08:51:17.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/nvvertexec.c 2004-12-15 02:51:03.000000000 +0100 @@ -358,8 +358,8 @@ * Set x to positive or negative infinity. */ #if defined(USE_IEEE) || defined(_WIN32) -#define SET_POS_INFINITY(x) ( *((GLuint *) &x) = 0x7F800000 ) -#define SET_NEG_INFINITY(x) ( *((GLuint *) &x) = 0xFF800000 ) +#define SET_POS_INFINITY(x) ( *((GLuint *) (void *)&x) = 0x7F800000 ) +#define SET_NEG_INFINITY(x) ( *((GLuint *) (void *)&x) = 0xFF800000 ) #elif defined(VMS) #define SET_POS_INFINITY(x) x = __MAXFLOAT #define SET_NEG_INFINITY(x) x = -__MAXFLOAT @@ -368,7 +368,7 @@ #define SET_NEG_INFINITY(x) x = (GLfloat) -HUGE_VAL #endif -#define SET_FLOAT_BITS(x, bits) ((fi_type *) &(x))->i = bits +#define SET_FLOAT_BITS(x, bits) ((fi_type *) (void *) &(x))->i = bits /** @@ -467,7 +467,7 @@ GLint ii = (GLint) floor_t0; ii = (ii < 23) + 0x3f800000; SET_FLOAT_BITS(q[0], ii); - q[0] = *((GLfloat *) &ii); + q[0] = *((GLfloat *) (void *)&ii); #else q[0] = (GLfloat) pow(2.0, floor_t0); #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/nvvertparse.c x11r682/xc/extras/Mesa/src/mesa/shader/nvvertparse.c --- xc/extras/Mesa/src/mesa/shader/nvvertparse.c 2004-07-22 08:51:18.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/nvvertparse.c 2004-12-15 02:51:03.000000000 +0100 @@ -1023,6 +1023,7 @@ Parse_OptionSequence(struct parse_state *parseState, struct vp_instruction program[]) { + (void) program; while (1) { if (!Parse_String(parseState, "OPTION")) return GL_TRUE; /* ok, not an OPTION statement */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/program.c x11r682/xc/extras/Mesa/src/mesa/shader/program.c --- xc/extras/Mesa/src/mesa/shader/program.c 2004-08-28 06:28:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/program.c 2004-12-15 02:51:03.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -46,6 +46,12 @@ /**********************************************************************/ +/* A pointer to this dummy program is put into the hash table when + * glGenPrograms is called. + */ +struct program _mesa_DummyProgram; + + /** * Init context's vertex/fragment program state */ @@ -163,10 +169,14 @@ } -static struct program * _mesa_init_program_struct( GLcontext *ctx, - struct program *prog, - GLenum target, GLuint id) +/** + * Initialize a new vertex/fragment program object. + */ +static struct program * +_mesa_init_program_struct( GLcontext *ctx, struct program *prog, + GLenum target, GLuint id) { + (void) ctx; if (prog) { prog->Id = id; prog->Target = target; @@ -177,9 +187,13 @@ return prog; } -struct program * _mesa_init_fragment_program( GLcontext *ctx, - struct fragment_program *prog, - GLenum target, GLuint id) + +/** + * Initialize a new fragment program object. + */ +struct program * +_mesa_init_fragment_program( GLcontext *ctx, struct fragment_program *prog, + GLenum target, GLuint id) { if (prog) return _mesa_init_program_struct( ctx, &prog->Base, target, id ); @@ -187,9 +201,13 @@ return NULL; } -struct program * _mesa_init_vertex_program( GLcontext *ctx, - struct vertex_program *prog, - GLenum target, GLuint id) + +/** + * Initialize a new vertex program object. + */ +struct program * +_mesa_init_vertex_program( GLcontext *ctx, struct vertex_program *prog, + GLenum target, GLuint id) { if (prog) return _mesa_init_program_struct( ctx, &prog->Base, target, id ); @@ -217,12 +235,10 @@ case GL_VERTEX_PROGRAM_ARB: /* == GL_VERTEX_PROGRAM_NV */ return _mesa_init_vertex_program( ctx, CALLOC_STRUCT(vertex_program), target, id ); - case GL_FRAGMENT_PROGRAM_NV: case GL_FRAGMENT_PROGRAM_ARB: return _mesa_init_fragment_program( ctx, CALLOC_STRUCT(fragment_program), target, id ); - default: _mesa_problem(ctx, "bad target in _mesa_new_program"); return NULL; @@ -239,6 +255,7 @@ void _mesa_delete_program(GLcontext *ctx, struct program *prog) { + (void) ctx; ASSERT(prog); if (prog->String) @@ -524,8 +541,7 @@ _mesa_problem(ctx, "Invalid material state in fetch_state"); return; } - }; - return; + } case STATE_LIGHT: { /* state[1] is the light number */ @@ -573,7 +589,6 @@ return; } } - return; case STATE_LIGHTMODEL_AMBIENT: COPY_4V(value, ctx->Light.Model.Ambient); return; @@ -633,7 +648,6 @@ return; } } - return; case STATE_TEXGEN: { /* state[1] is the texture unit */ @@ -669,7 +683,6 @@ return; } } - return; case STATE_TEXENV_COLOR: { /* state[1] is the texture unit */ @@ -864,15 +877,19 @@ && ctx->Extensions.NV_vertex_program) || (target == GL_VERTEX_PROGRAM_ARB && ctx->Extensions.ARB_vertex_program)) { - if (ctx->VertexProgram.Current && - ctx->VertexProgram.Current->Base.Id == id) + /*** Vertex program binding ***/ + struct vertex_program *curProg = ctx->VertexProgram.Current; + if (curProg->Base.Id == id) { + /* binding same program - no change */ return; - /* decrement refcount on previously bound vertex program */ - if (ctx->VertexProgram.Current) { - ctx->VertexProgram.Current->Base.RefCount--; + } + if (curProg->Base.Id != 0) { + /* decrement refcount on previously bound vertex program */ + curProg->Base.RefCount--; /* and delete if refcount goes below one */ - if (ctx->VertexProgram.Current->Base.RefCount <= 0) { - ctx->Driver.DeleteProgram(ctx, &(ctx->VertexProgram.Current->Base)); + if (curProg->Base.RefCount <= 0) { + ASSERT(curProg->Base.DeletePending); + ctx->Driver.DeleteProgram(ctx, &(curProg->Base)); _mesa_HashRemove(ctx->Shared->Programs, id); } } @@ -881,15 +898,19 @@ && ctx->Extensions.NV_fragment_program) || (target == GL_FRAGMENT_PROGRAM_ARB && ctx->Extensions.ARB_fragment_program)) { - if (ctx->FragmentProgram.Current && - ctx->FragmentProgram.Current->Base.Id == id) + /*** Fragment program binding ***/ + struct fragment_program *curProg = ctx->FragmentProgram.Current; + if (curProg->Base.Id == id) { + /* binding same program - no change */ return; - /* decrement refcount on previously bound fragment program */ - if (ctx->FragmentProgram.Current) { - ctx->FragmentProgram.Current->Base.RefCount--; + } + if (curProg->Base.Id != 0) { + /* decrement refcount on previously bound fragment program */ + curProg->Base.RefCount--; /* and delete if refcount goes below one */ - if (ctx->FragmentProgram.Current->Base.RefCount <= 0) { - ctx->Driver.DeleteProgram(ctx, &(ctx->FragmentProgram.Current->Base)); + if (curProg->Base.RefCount <= 0) { + ASSERT(curProg->Base.DeletePending); + ctx->Driver.DeleteProgram(ctx, &(curProg->Base)); _mesa_HashRemove(ctx->Shared->Programs, id); } } @@ -903,7 +924,7 @@ * That's supposed to be caught in glBegin. */ if (id == 0) { - /* default program */ + /* Bind default program */ prog = NULL; if (target == GL_VERTEX_PROGRAM_NV || target == GL_VERTEX_PROGRAM_ARB) prog = ctx->Shared->DefaultVertexProgram; @@ -911,19 +932,9 @@ prog = ctx->Shared->DefaultFragmentProgram; } else { + /* Bind user program */ prog = (struct program *) _mesa_HashLookup(ctx->Shared->Programs, id); - if (prog) { - if (prog->Target == 0) { - /* prog was allocated with glGenProgramsNV */ - prog->Target = target; - } - else if (prog->Target != target) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glBindProgramNV/ARB(target mismatch)"); - return; - } - } - else { + if (!prog || prog == &_mesa_DummyProgram) { /* allocate a new program now */ prog = ctx->Driver.NewProgram(ctx, target, id); if (!prog) { @@ -932,6 +943,11 @@ } _mesa_HashInsert(ctx->Shared->Programs, id, prog); } + else if (prog->Target != target) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBindProgramNV/ARB(target mismatch)"); + return; + } } /* bind now */ @@ -942,6 +958,10 @@ ctx->FragmentProgram.Current = (struct fragment_program *) prog; } + /* Never null pointers */ + ASSERT(ctx->VertexProgram.Current); + ASSERT(ctx->FragmentProgram.Current); + if (prog) prog->RefCount++; @@ -971,7 +991,11 @@ if (ids[i] != 0) { struct program *prog = (struct program *) _mesa_HashLookup(ctx->Shared->Programs, ids[i]); - if (prog) { + if (prog == &_mesa_DummyProgram) { + _mesa_HashRemove(ctx->Shared->Programs, ids[i]); + } + else if (prog) { + /* Unbind program if necessary */ if (prog->Target == GL_VERTEX_PROGRAM_NV || prog->Target == GL_VERTEX_STATE_PROGRAM_NV) { if (ctx->VertexProgram.Current && @@ -992,18 +1016,16 @@ _mesa_problem(ctx, "bad target in glDeleteProgramsNV"); return; } - prog->RefCount--; + /* Decrement reference count if not already marked for delete */ + if (!prog->DeletePending) { + prog->DeletePending = GL_TRUE; + prog->RefCount--; + } if (prog->RefCount <= 0) { + _mesa_HashRemove(ctx->Shared->Programs, ids[i]); ctx->Driver.DeleteProgram(ctx, prog); } } - /* Always remove entry from hash table. - * This is necessary as we can't tell from HashLookup - * whether the entry exists with data == 0, or if it - * doesn't exist at all. As GenPrograms creates the first - * case below, need to call Remove() to avoid memory leak: - */ - _mesa_HashRemove(ctx->Shared->Programs, ids[i]); } } } @@ -1032,8 +1054,9 @@ first = _mesa_HashFindFreeKeyBlock(ctx->Shared->Programs, n); + /* Insert pointer to dummy program as placeholder */ for (i = 0; i < (GLuint) n; i++) { - _mesa_HashInsert(ctx->Shared->Programs, first + i, 0); + _mesa_HashInsert(ctx->Shared->Programs, first + i, &_mesa_DummyProgram); } /* Return the program names */ @@ -1044,7 +1067,7 @@ /** - * Determine if id names a program. + * Determine if id names a vertex or fragment program. * \note Not compiled into display lists. * \note Called from both glIsProgramNV and glIsProgramARB. * \param id is the program identifier diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/shader/program.h x11r682/xc/extras/Mesa/src/mesa/shader/program.h --- xc/extras/Mesa/src/mesa/shader/program.h 2004-08-28 06:28:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/shader/program.h 2004-12-15 02:51:03.000000000 +0100 @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.2 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * 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"), @@ -29,6 +29,14 @@ */ +/** + * \mainpage Mesa vertex and fragment program module + * + * This module or directory contains most of the code for vertex and + * fragment programs and shaders, including state management, parsers, + * and (some) software routines for executing programs + */ + #ifndef PROGRAM_H #define PROGRAM_H @@ -44,6 +52,9 @@ #define SWIZZLE_ONE 5 /* keep these values together: KW */ +extern struct program _mesa_DummyProgram; + + /* * Internal functions */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/sparc/clip.S x11r682/xc/extras/Mesa/src/mesa/sparc/clip.S --- xc/extras/Mesa/src/mesa/sparc/clip.S 2004-06-16 11:19:23.000000000 +0200 +++ xc/extras/Mesa/src/mesa/sparc/clip.S 2004-12-15 02:51:03.000000000 +0100 @@ -2,7 +2,7 @@ * Clip testing in SPARC assembly */ -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) #define LDPTR ldx #define V4F_DATA 0x00 #define V4F_START 0x08 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/sparc/glapi_sparc.S x11r682/xc/extras/Mesa/src/mesa/sparc/glapi_sparc.S --- xc/extras/Mesa/src/mesa/sparc/glapi_sparc.S 2004-06-16 11:19:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/sparc/glapi_sparc.S 2004-12-15 02:51:03.000000000 +0100 @@ -24,7 +24,7 @@ .globl glNewList .type glNewList,#function glNewList: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -45,7 +45,7 @@ .globl glEndList .type glEndList,#function glEndList: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -66,7 +66,7 @@ .globl glCallList .type glCallList,#function glCallList: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -87,7 +87,7 @@ .globl glCallLists .type glCallLists,#function glCallLists: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -108,7 +108,7 @@ .globl glDeleteLists .type glDeleteLists,#function glDeleteLists: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -129,7 +129,7 @@ .globl glGenLists .type glGenLists,#function glGenLists: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -150,7 +150,7 @@ .globl glListBase .type glListBase,#function glListBase: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -171,7 +171,7 @@ .globl glBegin .type glBegin,#function glBegin: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -192,7 +192,7 @@ .globl glBitmap .type glBitmap,#function glBitmap: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -213,7 +213,7 @@ .globl glColor3b .type glColor3b,#function glColor3b: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -234,7 +234,7 @@ .globl glColor3bv .type glColor3bv,#function glColor3bv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -255,7 +255,7 @@ .globl glColor3d .type glColor3d,#function glColor3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -276,7 +276,7 @@ .globl glColor3dv .type glColor3dv,#function glColor3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -297,7 +297,7 @@ .globl glColor3f .type glColor3f,#function glColor3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -318,7 +318,7 @@ .globl glColor3fv .type glColor3fv,#function glColor3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -339,7 +339,7 @@ .globl glColor3i .type glColor3i,#function glColor3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -360,7 +360,7 @@ .globl glColor3iv .type glColor3iv,#function glColor3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -381,7 +381,7 @@ .globl glColor3s .type glColor3s,#function glColor3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -402,7 +402,7 @@ .globl glColor3sv .type glColor3sv,#function glColor3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -423,7 +423,7 @@ .globl glColor3ub .type glColor3ub,#function glColor3ub: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -444,7 +444,7 @@ .globl glColor3ubv .type glColor3ubv,#function glColor3ubv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -465,7 +465,7 @@ .globl glColor3ui .type glColor3ui,#function glColor3ui: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -486,7 +486,7 @@ .globl glColor3uiv .type glColor3uiv,#function glColor3uiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -507,7 +507,7 @@ .globl glColor3us .type glColor3us,#function glColor3us: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -528,7 +528,7 @@ .globl glColor3usv .type glColor3usv,#function glColor3usv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -549,7 +549,7 @@ .globl glColor4b .type glColor4b,#function glColor4b: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -570,7 +570,7 @@ .globl glColor4bv .type glColor4bv,#function glColor4bv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -591,7 +591,7 @@ .globl glColor4d .type glColor4d,#function glColor4d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -612,7 +612,7 @@ .globl glColor4dv .type glColor4dv,#function glColor4dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -633,7 +633,7 @@ .globl glColor4f .type glColor4f,#function glColor4f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -654,7 +654,7 @@ .globl glColor4fv .type glColor4fv,#function glColor4fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -675,7 +675,7 @@ .globl glColor4i .type glColor4i,#function glColor4i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -696,7 +696,7 @@ .globl glColor4iv .type glColor4iv,#function glColor4iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -717,7 +717,7 @@ .globl glColor4s .type glColor4s,#function glColor4s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -738,7 +738,7 @@ .globl glColor4sv .type glColor4sv,#function glColor4sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -759,7 +759,7 @@ .globl glColor4ub .type glColor4ub,#function glColor4ub: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -780,7 +780,7 @@ .globl glColor4ubv .type glColor4ubv,#function glColor4ubv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -801,7 +801,7 @@ .globl glColor4ui .type glColor4ui,#function glColor4ui: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -822,7 +822,7 @@ .globl glColor4uiv .type glColor4uiv,#function glColor4uiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -843,7 +843,7 @@ .globl glColor4us .type glColor4us,#function glColor4us: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -864,7 +864,7 @@ .globl glColor4usv .type glColor4usv,#function glColor4usv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -885,7 +885,7 @@ .globl glEdgeFlag .type glEdgeFlag,#function glEdgeFlag: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -906,7 +906,7 @@ .globl glEdgeFlagv .type glEdgeFlagv,#function glEdgeFlagv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -927,7 +927,7 @@ .globl glEnd .type glEnd,#function glEnd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -948,7 +948,7 @@ .globl glIndexd .type glIndexd,#function glIndexd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -969,7 +969,7 @@ .globl glIndexdv .type glIndexdv,#function glIndexdv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -990,7 +990,7 @@ .globl glIndexf .type glIndexf,#function glIndexf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1011,7 +1011,7 @@ .globl glIndexfv .type glIndexfv,#function glIndexfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1032,7 +1032,7 @@ .globl glIndexi .type glIndexi,#function glIndexi: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1053,7 +1053,7 @@ .globl glIndexiv .type glIndexiv,#function glIndexiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1074,7 +1074,7 @@ .globl glIndexs .type glIndexs,#function glIndexs: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1095,7 +1095,7 @@ .globl glIndexsv .type glIndexsv,#function glIndexsv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1116,7 +1116,7 @@ .globl glNormal3b .type glNormal3b,#function glNormal3b: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1137,7 +1137,7 @@ .globl glNormal3bv .type glNormal3bv,#function glNormal3bv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1158,7 +1158,7 @@ .globl glNormal3d .type glNormal3d,#function glNormal3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1179,7 +1179,7 @@ .globl glNormal3dv .type glNormal3dv,#function glNormal3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1200,7 +1200,7 @@ .globl glNormal3f .type glNormal3f,#function glNormal3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1221,7 +1221,7 @@ .globl glNormal3fv .type glNormal3fv,#function glNormal3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1242,7 +1242,7 @@ .globl glNormal3i .type glNormal3i,#function glNormal3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1263,7 +1263,7 @@ .globl glNormal3iv .type glNormal3iv,#function glNormal3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1284,7 +1284,7 @@ .globl glNormal3s .type glNormal3s,#function glNormal3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1305,7 +1305,7 @@ .globl glNormal3sv .type glNormal3sv,#function glNormal3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1326,7 +1326,7 @@ .globl glRasterPos2d .type glRasterPos2d,#function glRasterPos2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1347,7 +1347,7 @@ .globl glRasterPos2dv .type glRasterPos2dv,#function glRasterPos2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1368,7 +1368,7 @@ .globl glRasterPos2f .type glRasterPos2f,#function glRasterPos2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1389,7 +1389,7 @@ .globl glRasterPos2fv .type glRasterPos2fv,#function glRasterPos2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1410,7 +1410,7 @@ .globl glRasterPos2i .type glRasterPos2i,#function glRasterPos2i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1431,7 +1431,7 @@ .globl glRasterPos2iv .type glRasterPos2iv,#function glRasterPos2iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1452,7 +1452,7 @@ .globl glRasterPos2s .type glRasterPos2s,#function glRasterPos2s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1473,7 +1473,7 @@ .globl glRasterPos2sv .type glRasterPos2sv,#function glRasterPos2sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1494,7 +1494,7 @@ .globl glRasterPos3d .type glRasterPos3d,#function glRasterPos3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1515,7 +1515,7 @@ .globl glRasterPos3dv .type glRasterPos3dv,#function glRasterPos3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1536,7 +1536,7 @@ .globl glRasterPos3f .type glRasterPos3f,#function glRasterPos3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1557,7 +1557,7 @@ .globl glRasterPos3fv .type glRasterPos3fv,#function glRasterPos3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1578,7 +1578,7 @@ .globl glRasterPos3i .type glRasterPos3i,#function glRasterPos3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1599,7 +1599,7 @@ .globl glRasterPos3iv .type glRasterPos3iv,#function glRasterPos3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1620,7 +1620,7 @@ .globl glRasterPos3s .type glRasterPos3s,#function glRasterPos3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1641,7 +1641,7 @@ .globl glRasterPos3sv .type glRasterPos3sv,#function glRasterPos3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1662,7 +1662,7 @@ .globl glRasterPos4d .type glRasterPos4d,#function glRasterPos4d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1683,7 +1683,7 @@ .globl glRasterPos4dv .type glRasterPos4dv,#function glRasterPos4dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1704,7 +1704,7 @@ .globl glRasterPos4f .type glRasterPos4f,#function glRasterPos4f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1725,7 +1725,7 @@ .globl glRasterPos4fv .type glRasterPos4fv,#function glRasterPos4fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1746,7 +1746,7 @@ .globl glRasterPos4i .type glRasterPos4i,#function glRasterPos4i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1767,7 +1767,7 @@ .globl glRasterPos4iv .type glRasterPos4iv,#function glRasterPos4iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1788,7 +1788,7 @@ .globl glRasterPos4s .type glRasterPos4s,#function glRasterPos4s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1809,7 +1809,7 @@ .globl glRasterPos4sv .type glRasterPos4sv,#function glRasterPos4sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1830,7 +1830,7 @@ .globl glRectd .type glRectd,#function glRectd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1851,7 +1851,7 @@ .globl glRectdv .type glRectdv,#function glRectdv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1872,7 +1872,7 @@ .globl glRectf .type glRectf,#function glRectf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1893,7 +1893,7 @@ .globl glRectfv .type glRectfv,#function glRectfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1914,7 +1914,7 @@ .globl glRecti .type glRecti,#function glRecti: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1935,7 +1935,7 @@ .globl glRectiv .type glRectiv,#function glRectiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1956,7 +1956,7 @@ .globl glRects .type glRects,#function glRects: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1977,7 +1977,7 @@ .globl glRectsv .type glRectsv,#function glRectsv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -1998,7 +1998,7 @@ .globl glTexCoord1d .type glTexCoord1d,#function glTexCoord1d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2019,7 +2019,7 @@ .globl glTexCoord1dv .type glTexCoord1dv,#function glTexCoord1dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2040,7 +2040,7 @@ .globl glTexCoord1f .type glTexCoord1f,#function glTexCoord1f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2061,7 +2061,7 @@ .globl glTexCoord1fv .type glTexCoord1fv,#function glTexCoord1fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2082,7 +2082,7 @@ .globl glTexCoord1i .type glTexCoord1i,#function glTexCoord1i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2103,7 +2103,7 @@ .globl glTexCoord1iv .type glTexCoord1iv,#function glTexCoord1iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2124,7 +2124,7 @@ .globl glTexCoord1s .type glTexCoord1s,#function glTexCoord1s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2145,7 +2145,7 @@ .globl glTexCoord1sv .type glTexCoord1sv,#function glTexCoord1sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2166,7 +2166,7 @@ .globl glTexCoord2d .type glTexCoord2d,#function glTexCoord2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2187,7 +2187,7 @@ .globl glTexCoord2dv .type glTexCoord2dv,#function glTexCoord2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2208,7 +2208,7 @@ .globl glTexCoord2f .type glTexCoord2f,#function glTexCoord2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2229,7 +2229,7 @@ .globl glTexCoord2fv .type glTexCoord2fv,#function glTexCoord2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2250,7 +2250,7 @@ .globl glTexCoord2i .type glTexCoord2i,#function glTexCoord2i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2271,7 +2271,7 @@ .globl glTexCoord2iv .type glTexCoord2iv,#function glTexCoord2iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2292,7 +2292,7 @@ .globl glTexCoord2s .type glTexCoord2s,#function glTexCoord2s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2313,7 +2313,7 @@ .globl glTexCoord2sv .type glTexCoord2sv,#function glTexCoord2sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2334,7 +2334,7 @@ .globl glTexCoord3d .type glTexCoord3d,#function glTexCoord3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2355,7 +2355,7 @@ .globl glTexCoord3dv .type glTexCoord3dv,#function glTexCoord3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2376,7 +2376,7 @@ .globl glTexCoord3f .type glTexCoord3f,#function glTexCoord3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2397,7 +2397,7 @@ .globl glTexCoord3fv .type glTexCoord3fv,#function glTexCoord3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2418,7 +2418,7 @@ .globl glTexCoord3i .type glTexCoord3i,#function glTexCoord3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2439,7 +2439,7 @@ .globl glTexCoord3iv .type glTexCoord3iv,#function glTexCoord3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2460,7 +2460,7 @@ .globl glTexCoord3s .type glTexCoord3s,#function glTexCoord3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2481,7 +2481,7 @@ .globl glTexCoord3sv .type glTexCoord3sv,#function glTexCoord3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2502,7 +2502,7 @@ .globl glTexCoord4d .type glTexCoord4d,#function glTexCoord4d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2523,7 +2523,7 @@ .globl glTexCoord4dv .type glTexCoord4dv,#function glTexCoord4dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2544,7 +2544,7 @@ .globl glTexCoord4f .type glTexCoord4f,#function glTexCoord4f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2565,7 +2565,7 @@ .globl glTexCoord4fv .type glTexCoord4fv,#function glTexCoord4fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2586,7 +2586,7 @@ .globl glTexCoord4i .type glTexCoord4i,#function glTexCoord4i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2607,7 +2607,7 @@ .globl glTexCoord4iv .type glTexCoord4iv,#function glTexCoord4iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2628,7 +2628,7 @@ .globl glTexCoord4s .type glTexCoord4s,#function glTexCoord4s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2649,7 +2649,7 @@ .globl glTexCoord4sv .type glTexCoord4sv,#function glTexCoord4sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2670,7 +2670,7 @@ .globl glVertex2d .type glVertex2d,#function glVertex2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2691,7 +2691,7 @@ .globl glVertex2dv .type glVertex2dv,#function glVertex2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2712,7 +2712,7 @@ .globl glVertex2f .type glVertex2f,#function glVertex2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2733,7 +2733,7 @@ .globl glVertex2fv .type glVertex2fv,#function glVertex2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2754,7 +2754,7 @@ .globl glVertex2i .type glVertex2i,#function glVertex2i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2775,7 +2775,7 @@ .globl glVertex2iv .type glVertex2iv,#function glVertex2iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2796,7 +2796,7 @@ .globl glVertex2s .type glVertex2s,#function glVertex2s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2817,7 +2817,7 @@ .globl glVertex2sv .type glVertex2sv,#function glVertex2sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2838,7 +2838,7 @@ .globl glVertex3d .type glVertex3d,#function glVertex3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2859,7 +2859,7 @@ .globl glVertex3dv .type glVertex3dv,#function glVertex3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2880,7 +2880,7 @@ .globl glVertex3f .type glVertex3f,#function glVertex3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2901,7 +2901,7 @@ .globl glVertex3fv .type glVertex3fv,#function glVertex3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2922,7 +2922,7 @@ .globl glVertex3i .type glVertex3i,#function glVertex3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2943,7 +2943,7 @@ .globl glVertex3iv .type glVertex3iv,#function glVertex3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2964,7 +2964,7 @@ .globl glVertex3s .type glVertex3s,#function glVertex3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -2985,7 +2985,7 @@ .globl glVertex3sv .type glVertex3sv,#function glVertex3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3006,7 +3006,7 @@ .globl glVertex4d .type glVertex4d,#function glVertex4d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3027,7 +3027,7 @@ .globl glVertex4dv .type glVertex4dv,#function glVertex4dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3048,7 +3048,7 @@ .globl glVertex4f .type glVertex4f,#function glVertex4f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3069,7 +3069,7 @@ .globl glVertex4fv .type glVertex4fv,#function glVertex4fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3090,7 +3090,7 @@ .globl glVertex4i .type glVertex4i,#function glVertex4i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3111,7 +3111,7 @@ .globl glVertex4iv .type glVertex4iv,#function glVertex4iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3132,7 +3132,7 @@ .globl glVertex4s .type glVertex4s,#function glVertex4s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3153,7 +3153,7 @@ .globl glVertex4sv .type glVertex4sv,#function glVertex4sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3174,7 +3174,7 @@ .globl glClipPlane .type glClipPlane,#function glClipPlane: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3195,7 +3195,7 @@ .globl glColorMaterial .type glColorMaterial,#function glColorMaterial: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3216,7 +3216,7 @@ .globl glCullFace .type glCullFace,#function glCullFace: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3237,7 +3237,7 @@ .globl glFogf .type glFogf,#function glFogf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3258,7 +3258,7 @@ .globl glFogfv .type glFogfv,#function glFogfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3279,7 +3279,7 @@ .globl glFogi .type glFogi,#function glFogi: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3300,7 +3300,7 @@ .globl glFogiv .type glFogiv,#function glFogiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3321,7 +3321,7 @@ .globl glFrontFace .type glFrontFace,#function glFrontFace: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3342,7 +3342,7 @@ .globl glHint .type glHint,#function glHint: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3363,7 +3363,7 @@ .globl glLightf .type glLightf,#function glLightf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3384,7 +3384,7 @@ .globl glLightfv .type glLightfv,#function glLightfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3405,7 +3405,7 @@ .globl glLighti .type glLighti,#function glLighti: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3426,7 +3426,7 @@ .globl glLightiv .type glLightiv,#function glLightiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3447,7 +3447,7 @@ .globl glLightModelf .type glLightModelf,#function glLightModelf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3468,7 +3468,7 @@ .globl glLightModelfv .type glLightModelfv,#function glLightModelfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3489,7 +3489,7 @@ .globl glLightModeli .type glLightModeli,#function glLightModeli: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3510,7 +3510,7 @@ .globl glLightModeliv .type glLightModeliv,#function glLightModeliv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3531,7 +3531,7 @@ .globl glLineStipple .type glLineStipple,#function glLineStipple: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3552,7 +3552,7 @@ .globl glLineWidth .type glLineWidth,#function glLineWidth: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3573,7 +3573,7 @@ .globl glMaterialf .type glMaterialf,#function glMaterialf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3594,7 +3594,7 @@ .globl glMaterialfv .type glMaterialfv,#function glMaterialfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3615,7 +3615,7 @@ .globl glMateriali .type glMateriali,#function glMateriali: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3636,7 +3636,7 @@ .globl glMaterialiv .type glMaterialiv,#function glMaterialiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3657,7 +3657,7 @@ .globl glPointSize .type glPointSize,#function glPointSize: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3678,7 +3678,7 @@ .globl glPolygonMode .type glPolygonMode,#function glPolygonMode: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3699,7 +3699,7 @@ .globl glPolygonStipple .type glPolygonStipple,#function glPolygonStipple: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3720,7 +3720,7 @@ .globl glScissor .type glScissor,#function glScissor: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3741,7 +3741,7 @@ .globl glShadeModel .type glShadeModel,#function glShadeModel: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3762,7 +3762,7 @@ .globl glTexParameterf .type glTexParameterf,#function glTexParameterf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3783,7 +3783,7 @@ .globl glTexParameterfv .type glTexParameterfv,#function glTexParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3804,7 +3804,7 @@ .globl glTexParameteri .type glTexParameteri,#function glTexParameteri: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3825,7 +3825,7 @@ .globl glTexParameteriv .type glTexParameteriv,#function glTexParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3846,7 +3846,7 @@ .globl glTexImage1D .type glTexImage1D,#function glTexImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3867,7 +3867,7 @@ .globl glTexImage2D .type glTexImage2D,#function glTexImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3888,7 +3888,7 @@ .globl glTexEnvf .type glTexEnvf,#function glTexEnvf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3909,7 +3909,7 @@ .globl glTexEnvfv .type glTexEnvfv,#function glTexEnvfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3930,7 +3930,7 @@ .globl glTexEnvi .type glTexEnvi,#function glTexEnvi: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3951,7 +3951,7 @@ .globl glTexEnviv .type glTexEnviv,#function glTexEnviv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3972,7 +3972,7 @@ .globl glTexGend .type glTexGend,#function glTexGend: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -3993,7 +3993,7 @@ .globl glTexGendv .type glTexGendv,#function glTexGendv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4014,7 +4014,7 @@ .globl glTexGenf .type glTexGenf,#function glTexGenf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4035,7 +4035,7 @@ .globl glTexGenfv .type glTexGenfv,#function glTexGenfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4056,7 +4056,7 @@ .globl glTexGeni .type glTexGeni,#function glTexGeni: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4077,7 +4077,7 @@ .globl glTexGeniv .type glTexGeniv,#function glTexGeniv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4098,7 +4098,7 @@ .globl glFeedbackBuffer .type glFeedbackBuffer,#function glFeedbackBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4119,7 +4119,7 @@ .globl glSelectBuffer .type glSelectBuffer,#function glSelectBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4140,7 +4140,7 @@ .globl glRenderMode .type glRenderMode,#function glRenderMode: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4161,7 +4161,7 @@ .globl glInitNames .type glInitNames,#function glInitNames: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4182,7 +4182,7 @@ .globl glLoadName .type glLoadName,#function glLoadName: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4203,7 +4203,7 @@ .globl glPassThrough .type glPassThrough,#function glPassThrough: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4224,7 +4224,7 @@ .globl glPopName .type glPopName,#function glPopName: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4245,7 +4245,7 @@ .globl glPushName .type glPushName,#function glPushName: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4266,7 +4266,7 @@ .globl glDrawBuffer .type glDrawBuffer,#function glDrawBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4287,7 +4287,7 @@ .globl glClear .type glClear,#function glClear: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4308,7 +4308,7 @@ .globl glClearAccum .type glClearAccum,#function glClearAccum: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4329,7 +4329,7 @@ .globl glClearIndex .type glClearIndex,#function glClearIndex: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4350,7 +4350,7 @@ .globl glClearColor .type glClearColor,#function glClearColor: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4371,7 +4371,7 @@ .globl glClearStencil .type glClearStencil,#function glClearStencil: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4392,7 +4392,7 @@ .globl glClearDepth .type glClearDepth,#function glClearDepth: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4413,7 +4413,7 @@ .globl glStencilMask .type glStencilMask,#function glStencilMask: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4434,7 +4434,7 @@ .globl glColorMask .type glColorMask,#function glColorMask: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4455,7 +4455,7 @@ .globl glDepthMask .type glDepthMask,#function glDepthMask: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4476,7 +4476,7 @@ .globl glIndexMask .type glIndexMask,#function glIndexMask: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4497,7 +4497,7 @@ .globl glAccum .type glAccum,#function glAccum: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4518,7 +4518,7 @@ .globl glDisable .type glDisable,#function glDisable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4539,7 +4539,7 @@ .globl glEnable .type glEnable,#function glEnable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4560,7 +4560,7 @@ .globl glFinish .type glFinish,#function glFinish: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4581,7 +4581,7 @@ .globl glFlush .type glFlush,#function glFlush: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4602,7 +4602,7 @@ .globl glPopAttrib .type glPopAttrib,#function glPopAttrib: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4623,7 +4623,7 @@ .globl glPushAttrib .type glPushAttrib,#function glPushAttrib: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4644,7 +4644,7 @@ .globl glMap1d .type glMap1d,#function glMap1d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4665,7 +4665,7 @@ .globl glMap1f .type glMap1f,#function glMap1f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4686,7 +4686,7 @@ .globl glMap2d .type glMap2d,#function glMap2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4707,7 +4707,7 @@ .globl glMap2f .type glMap2f,#function glMap2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4728,7 +4728,7 @@ .globl glMapGrid1d .type glMapGrid1d,#function glMapGrid1d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4749,7 +4749,7 @@ .globl glMapGrid1f .type glMapGrid1f,#function glMapGrid1f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4770,7 +4770,7 @@ .globl glMapGrid2d .type glMapGrid2d,#function glMapGrid2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4791,7 +4791,7 @@ .globl glMapGrid2f .type glMapGrid2f,#function glMapGrid2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4812,7 +4812,7 @@ .globl glEvalCoord1d .type glEvalCoord1d,#function glEvalCoord1d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4833,7 +4833,7 @@ .globl glEvalCoord1dv .type glEvalCoord1dv,#function glEvalCoord1dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4854,7 +4854,7 @@ .globl glEvalCoord1f .type glEvalCoord1f,#function glEvalCoord1f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4875,7 +4875,7 @@ .globl glEvalCoord1fv .type glEvalCoord1fv,#function glEvalCoord1fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4896,7 +4896,7 @@ .globl glEvalCoord2d .type glEvalCoord2d,#function glEvalCoord2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4917,7 +4917,7 @@ .globl glEvalCoord2dv .type glEvalCoord2dv,#function glEvalCoord2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4938,7 +4938,7 @@ .globl glEvalCoord2f .type glEvalCoord2f,#function glEvalCoord2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4959,7 +4959,7 @@ .globl glEvalCoord2fv .type glEvalCoord2fv,#function glEvalCoord2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -4980,7 +4980,7 @@ .globl glEvalMesh1 .type glEvalMesh1,#function glEvalMesh1: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5001,7 +5001,7 @@ .globl glEvalPoint1 .type glEvalPoint1,#function glEvalPoint1: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5022,7 +5022,7 @@ .globl glEvalMesh2 .type glEvalMesh2,#function glEvalMesh2: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5043,7 +5043,7 @@ .globl glEvalPoint2 .type glEvalPoint2,#function glEvalPoint2: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5064,7 +5064,7 @@ .globl glAlphaFunc .type glAlphaFunc,#function glAlphaFunc: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5085,7 +5085,7 @@ .globl glBlendFunc .type glBlendFunc,#function glBlendFunc: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5106,7 +5106,7 @@ .globl glLogicOp .type glLogicOp,#function glLogicOp: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5127,7 +5127,7 @@ .globl glStencilFunc .type glStencilFunc,#function glStencilFunc: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5148,7 +5148,7 @@ .globl glStencilOp .type glStencilOp,#function glStencilOp: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5169,7 +5169,7 @@ .globl glDepthFunc .type glDepthFunc,#function glDepthFunc: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5190,7 +5190,7 @@ .globl glPixelZoom .type glPixelZoom,#function glPixelZoom: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5211,7 +5211,7 @@ .globl glPixelTransferf .type glPixelTransferf,#function glPixelTransferf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5232,7 +5232,7 @@ .globl glPixelTransferi .type glPixelTransferi,#function glPixelTransferi: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5253,7 +5253,7 @@ .globl glPixelStoref .type glPixelStoref,#function glPixelStoref: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5274,7 +5274,7 @@ .globl glPixelStorei .type glPixelStorei,#function glPixelStorei: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5295,7 +5295,7 @@ .globl glPixelMapfv .type glPixelMapfv,#function glPixelMapfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5316,7 +5316,7 @@ .globl glPixelMapuiv .type glPixelMapuiv,#function glPixelMapuiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5337,7 +5337,7 @@ .globl glPixelMapusv .type glPixelMapusv,#function glPixelMapusv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5358,7 +5358,7 @@ .globl glReadBuffer .type glReadBuffer,#function glReadBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5379,7 +5379,7 @@ .globl glCopyPixels .type glCopyPixels,#function glCopyPixels: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5400,7 +5400,7 @@ .globl glReadPixels .type glReadPixels,#function glReadPixels: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5421,7 +5421,7 @@ .globl glDrawPixels .type glDrawPixels,#function glDrawPixels: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5442,7 +5442,7 @@ .globl glGetBooleanv .type glGetBooleanv,#function glGetBooleanv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5463,7 +5463,7 @@ .globl glGetClipPlane .type glGetClipPlane,#function glGetClipPlane: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5484,7 +5484,7 @@ .globl glGetDoublev .type glGetDoublev,#function glGetDoublev: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5505,7 +5505,7 @@ .globl glGetError .type glGetError,#function glGetError: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5526,7 +5526,7 @@ .globl glGetFloatv .type glGetFloatv,#function glGetFloatv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5547,7 +5547,7 @@ .globl glGetIntegerv .type glGetIntegerv,#function glGetIntegerv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5568,7 +5568,7 @@ .globl glGetLightfv .type glGetLightfv,#function glGetLightfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5589,7 +5589,7 @@ .globl glGetLightiv .type glGetLightiv,#function glGetLightiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5610,7 +5610,7 @@ .globl glGetMapdv .type glGetMapdv,#function glGetMapdv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5631,7 +5631,7 @@ .globl glGetMapfv .type glGetMapfv,#function glGetMapfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5652,7 +5652,7 @@ .globl glGetMapiv .type glGetMapiv,#function glGetMapiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5673,7 +5673,7 @@ .globl glGetMaterialfv .type glGetMaterialfv,#function glGetMaterialfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5694,7 +5694,7 @@ .globl glGetMaterialiv .type glGetMaterialiv,#function glGetMaterialiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5715,7 +5715,7 @@ .globl glGetPixelMapfv .type glGetPixelMapfv,#function glGetPixelMapfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5736,7 +5736,7 @@ .globl glGetPixelMapuiv .type glGetPixelMapuiv,#function glGetPixelMapuiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5757,7 +5757,7 @@ .globl glGetPixelMapusv .type glGetPixelMapusv,#function glGetPixelMapusv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5778,7 +5778,7 @@ .globl glGetPolygonStipple .type glGetPolygonStipple,#function glGetPolygonStipple: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5799,7 +5799,7 @@ .globl glGetString .type glGetString,#function glGetString: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5820,7 +5820,7 @@ .globl glGetTexEnvfv .type glGetTexEnvfv,#function glGetTexEnvfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5841,7 +5841,7 @@ .globl glGetTexEnviv .type glGetTexEnviv,#function glGetTexEnviv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5862,7 +5862,7 @@ .globl glGetTexGendv .type glGetTexGendv,#function glGetTexGendv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5883,7 +5883,7 @@ .globl glGetTexGenfv .type glGetTexGenfv,#function glGetTexGenfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5904,7 +5904,7 @@ .globl glGetTexGeniv .type glGetTexGeniv,#function glGetTexGeniv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5925,7 +5925,7 @@ .globl glGetTexImage .type glGetTexImage,#function glGetTexImage: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5946,7 +5946,7 @@ .globl glGetTexParameterfv .type glGetTexParameterfv,#function glGetTexParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5967,7 +5967,7 @@ .globl glGetTexParameteriv .type glGetTexParameteriv,#function glGetTexParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -5988,7 +5988,7 @@ .globl glGetTexLevelParameterfv .type glGetTexLevelParameterfv,#function glGetTexLevelParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6009,7 +6009,7 @@ .globl glGetTexLevelParameteriv .type glGetTexLevelParameteriv,#function glGetTexLevelParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6030,7 +6030,7 @@ .globl glIsEnabled .type glIsEnabled,#function glIsEnabled: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6051,7 +6051,7 @@ .globl glIsList .type glIsList,#function glIsList: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6072,7 +6072,7 @@ .globl glDepthRange .type glDepthRange,#function glDepthRange: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6093,7 +6093,7 @@ .globl glFrustum .type glFrustum,#function glFrustum: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6114,7 +6114,7 @@ .globl glLoadIdentity .type glLoadIdentity,#function glLoadIdentity: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6135,7 +6135,7 @@ .globl glLoadMatrixf .type glLoadMatrixf,#function glLoadMatrixf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6156,7 +6156,7 @@ .globl glLoadMatrixd .type glLoadMatrixd,#function glLoadMatrixd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6177,7 +6177,7 @@ .globl glMatrixMode .type glMatrixMode,#function glMatrixMode: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6198,7 +6198,7 @@ .globl glMultMatrixf .type glMultMatrixf,#function glMultMatrixf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6219,7 +6219,7 @@ .globl glMultMatrixd .type glMultMatrixd,#function glMultMatrixd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6240,7 +6240,7 @@ .globl glOrtho .type glOrtho,#function glOrtho: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6261,7 +6261,7 @@ .globl glPopMatrix .type glPopMatrix,#function glPopMatrix: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6282,7 +6282,7 @@ .globl glPushMatrix .type glPushMatrix,#function glPushMatrix: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6303,7 +6303,7 @@ .globl glRotated .type glRotated,#function glRotated: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6324,7 +6324,7 @@ .globl glRotatef .type glRotatef,#function glRotatef: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6345,7 +6345,7 @@ .globl glScaled .type glScaled,#function glScaled: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6366,7 +6366,7 @@ .globl glScalef .type glScalef,#function glScalef: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6387,7 +6387,7 @@ .globl glTranslated .type glTranslated,#function glTranslated: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6408,7 +6408,7 @@ .globl glTranslatef .type glTranslatef,#function glTranslatef: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6429,7 +6429,7 @@ .globl glViewport .type glViewport,#function glViewport: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6450,7 +6450,7 @@ .globl glArrayElement .type glArrayElement,#function glArrayElement: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6471,7 +6471,7 @@ .globl glColorPointer .type glColorPointer,#function glColorPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6492,7 +6492,7 @@ .globl glDisableClientState .type glDisableClientState,#function glDisableClientState: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6513,7 +6513,7 @@ .globl glDrawArrays .type glDrawArrays,#function glDrawArrays: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6534,7 +6534,7 @@ .globl glDrawElements .type glDrawElements,#function glDrawElements: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6555,7 +6555,7 @@ .globl glEdgeFlagPointer .type glEdgeFlagPointer,#function glEdgeFlagPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6576,7 +6576,7 @@ .globl glEnableClientState .type glEnableClientState,#function glEnableClientState: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6597,7 +6597,7 @@ .globl glGetPointerv .type glGetPointerv,#function glGetPointerv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6618,7 +6618,7 @@ .globl glIndexPointer .type glIndexPointer,#function glIndexPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6639,7 +6639,7 @@ .globl glInterleavedArrays .type glInterleavedArrays,#function glInterleavedArrays: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6660,7 +6660,7 @@ .globl glNormalPointer .type glNormalPointer,#function glNormalPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6681,7 +6681,7 @@ .globl glTexCoordPointer .type glTexCoordPointer,#function glTexCoordPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6702,7 +6702,7 @@ .globl glVertexPointer .type glVertexPointer,#function glVertexPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6723,7 +6723,7 @@ .globl glPolygonOffset .type glPolygonOffset,#function glPolygonOffset: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6744,7 +6744,7 @@ .globl glCopyTexImage1D .type glCopyTexImage1D,#function glCopyTexImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6765,7 +6765,7 @@ .globl glCopyTexImage2D .type glCopyTexImage2D,#function glCopyTexImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6786,7 +6786,7 @@ .globl glCopyTexSubImage1D .type glCopyTexSubImage1D,#function glCopyTexSubImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6807,7 +6807,7 @@ .globl glCopyTexSubImage2D .type glCopyTexSubImage2D,#function glCopyTexSubImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6828,7 +6828,7 @@ .globl glTexSubImage1D .type glTexSubImage1D,#function glTexSubImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6849,7 +6849,7 @@ .globl glTexSubImage2D .type glTexSubImage2D,#function glTexSubImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6870,7 +6870,7 @@ .globl glAreTexturesResident .type glAreTexturesResident,#function glAreTexturesResident: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6891,7 +6891,7 @@ .globl glBindTexture .type glBindTexture,#function glBindTexture: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6912,7 +6912,7 @@ .globl glDeleteTextures .type glDeleteTextures,#function glDeleteTextures: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6933,7 +6933,7 @@ .globl glGenTextures .type glGenTextures,#function glGenTextures: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6954,7 +6954,7 @@ .globl glIsTexture .type glIsTexture,#function glIsTexture: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6975,7 +6975,7 @@ .globl glPrioritizeTextures .type glPrioritizeTextures,#function glPrioritizeTextures: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -6996,7 +6996,7 @@ .globl glIndexub .type glIndexub,#function glIndexub: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7017,7 +7017,7 @@ .globl glIndexubv .type glIndexubv,#function glIndexubv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7038,7 +7038,7 @@ .globl glPopClientAttrib .type glPopClientAttrib,#function glPopClientAttrib: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7059,7 +7059,7 @@ .globl glPushClientAttrib .type glPushClientAttrib,#function glPushClientAttrib: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7080,7 +7080,7 @@ .globl glBlendColor .type glBlendColor,#function glBlendColor: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7101,7 +7101,7 @@ .globl glBlendEquation .type glBlendEquation,#function glBlendEquation: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7122,7 +7122,7 @@ .globl glDrawRangeElements .type glDrawRangeElements,#function glDrawRangeElements: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7143,7 +7143,7 @@ .globl glColorTable .type glColorTable,#function glColorTable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7164,7 +7164,7 @@ .globl glColorTableParameterfv .type glColorTableParameterfv,#function glColorTableParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7185,7 +7185,7 @@ .globl glColorTableParameteriv .type glColorTableParameteriv,#function glColorTableParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7206,7 +7206,7 @@ .globl glCopyColorTable .type glCopyColorTable,#function glCopyColorTable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7227,7 +7227,7 @@ .globl glGetColorTable .type glGetColorTable,#function glGetColorTable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7248,7 +7248,7 @@ .globl glGetColorTableParameterfv .type glGetColorTableParameterfv,#function glGetColorTableParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7269,7 +7269,7 @@ .globl glGetColorTableParameteriv .type glGetColorTableParameteriv,#function glGetColorTableParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7290,7 +7290,7 @@ .globl glColorSubTable .type glColorSubTable,#function glColorSubTable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7311,7 +7311,7 @@ .globl glCopyColorSubTable .type glCopyColorSubTable,#function glCopyColorSubTable: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7332,7 +7332,7 @@ .globl glConvolutionFilter1D .type glConvolutionFilter1D,#function glConvolutionFilter1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7353,7 +7353,7 @@ .globl glConvolutionFilter2D .type glConvolutionFilter2D,#function glConvolutionFilter2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7374,7 +7374,7 @@ .globl glConvolutionParameterf .type glConvolutionParameterf,#function glConvolutionParameterf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7395,7 +7395,7 @@ .globl glConvolutionParameterfv .type glConvolutionParameterfv,#function glConvolutionParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7416,7 +7416,7 @@ .globl glConvolutionParameteri .type glConvolutionParameteri,#function glConvolutionParameteri: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7437,7 +7437,7 @@ .globl glConvolutionParameteriv .type glConvolutionParameteriv,#function glConvolutionParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7458,7 +7458,7 @@ .globl glCopyConvolutionFilter1D .type glCopyConvolutionFilter1D,#function glCopyConvolutionFilter1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7479,7 +7479,7 @@ .globl glCopyConvolutionFilter2D .type glCopyConvolutionFilter2D,#function glCopyConvolutionFilter2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7500,7 +7500,7 @@ .globl glGetConvolutionFilter .type glGetConvolutionFilter,#function glGetConvolutionFilter: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7521,7 +7521,7 @@ .globl glGetConvolutionParameterfv .type glGetConvolutionParameterfv,#function glGetConvolutionParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7542,7 +7542,7 @@ .globl glGetConvolutionParameteriv .type glGetConvolutionParameteriv,#function glGetConvolutionParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7563,7 +7563,7 @@ .globl glGetSeparableFilter .type glGetSeparableFilter,#function glGetSeparableFilter: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7584,7 +7584,7 @@ .globl glSeparableFilter2D .type glSeparableFilter2D,#function glSeparableFilter2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7605,7 +7605,7 @@ .globl glGetHistogram .type glGetHistogram,#function glGetHistogram: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7626,7 +7626,7 @@ .globl glGetHistogramParameterfv .type glGetHistogramParameterfv,#function glGetHistogramParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7647,7 +7647,7 @@ .globl glGetHistogramParameteriv .type glGetHistogramParameteriv,#function glGetHistogramParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7668,7 +7668,7 @@ .globl glGetMinmax .type glGetMinmax,#function glGetMinmax: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7689,7 +7689,7 @@ .globl glGetMinmaxParameterfv .type glGetMinmaxParameterfv,#function glGetMinmaxParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7710,7 +7710,7 @@ .globl glGetMinmaxParameteriv .type glGetMinmaxParameteriv,#function glGetMinmaxParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7731,7 +7731,7 @@ .globl glHistogram .type glHistogram,#function glHistogram: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7752,7 +7752,7 @@ .globl glMinmax .type glMinmax,#function glMinmax: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7773,7 +7773,7 @@ .globl glResetHistogram .type glResetHistogram,#function glResetHistogram: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7794,7 +7794,7 @@ .globl glResetMinmax .type glResetMinmax,#function glResetMinmax: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7815,7 +7815,7 @@ .globl glTexImage3D .type glTexImage3D,#function glTexImage3D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7836,7 +7836,7 @@ .globl glTexSubImage3D .type glTexSubImage3D,#function glTexSubImage3D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7857,7 +7857,7 @@ .globl glCopyTexSubImage3D .type glCopyTexSubImage3D,#function glCopyTexSubImage3D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7878,7 +7878,7 @@ .globl glActiveTextureARB .type glActiveTextureARB,#function glActiveTextureARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7899,7 +7899,7 @@ .globl glClientActiveTextureARB .type glClientActiveTextureARB,#function glClientActiveTextureARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7920,7 +7920,7 @@ .globl glMultiTexCoord1dARB .type glMultiTexCoord1dARB,#function glMultiTexCoord1dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7941,7 +7941,7 @@ .globl glMultiTexCoord1dvARB .type glMultiTexCoord1dvARB,#function glMultiTexCoord1dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7962,7 +7962,7 @@ .globl glMultiTexCoord1fARB .type glMultiTexCoord1fARB,#function glMultiTexCoord1fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -7983,7 +7983,7 @@ .globl glMultiTexCoord1fvARB .type glMultiTexCoord1fvARB,#function glMultiTexCoord1fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8004,7 +8004,7 @@ .globl glMultiTexCoord1iARB .type glMultiTexCoord1iARB,#function glMultiTexCoord1iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8025,7 +8025,7 @@ .globl glMultiTexCoord1ivARB .type glMultiTexCoord1ivARB,#function glMultiTexCoord1ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8046,7 +8046,7 @@ .globl glMultiTexCoord1sARB .type glMultiTexCoord1sARB,#function glMultiTexCoord1sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8067,7 +8067,7 @@ .globl glMultiTexCoord1svARB .type glMultiTexCoord1svARB,#function glMultiTexCoord1svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8088,7 +8088,7 @@ .globl glMultiTexCoord2dARB .type glMultiTexCoord2dARB,#function glMultiTexCoord2dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8109,7 +8109,7 @@ .globl glMultiTexCoord2dvARB .type glMultiTexCoord2dvARB,#function glMultiTexCoord2dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8130,7 +8130,7 @@ .globl glMultiTexCoord2fARB .type glMultiTexCoord2fARB,#function glMultiTexCoord2fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8151,7 +8151,7 @@ .globl glMultiTexCoord2fvARB .type glMultiTexCoord2fvARB,#function glMultiTexCoord2fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8172,7 +8172,7 @@ .globl glMultiTexCoord2iARB .type glMultiTexCoord2iARB,#function glMultiTexCoord2iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8193,7 +8193,7 @@ .globl glMultiTexCoord2ivARB .type glMultiTexCoord2ivARB,#function glMultiTexCoord2ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8214,7 +8214,7 @@ .globl glMultiTexCoord2sARB .type glMultiTexCoord2sARB,#function glMultiTexCoord2sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8235,7 +8235,7 @@ .globl glMultiTexCoord2svARB .type glMultiTexCoord2svARB,#function glMultiTexCoord2svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8256,7 +8256,7 @@ .globl glMultiTexCoord3dARB .type glMultiTexCoord3dARB,#function glMultiTexCoord3dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8277,7 +8277,7 @@ .globl glMultiTexCoord3dvARB .type glMultiTexCoord3dvARB,#function glMultiTexCoord3dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8298,7 +8298,7 @@ .globl glMultiTexCoord3fARB .type glMultiTexCoord3fARB,#function glMultiTexCoord3fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8319,7 +8319,7 @@ .globl glMultiTexCoord3fvARB .type glMultiTexCoord3fvARB,#function glMultiTexCoord3fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8340,7 +8340,7 @@ .globl glMultiTexCoord3iARB .type glMultiTexCoord3iARB,#function glMultiTexCoord3iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8361,7 +8361,7 @@ .globl glMultiTexCoord3ivARB .type glMultiTexCoord3ivARB,#function glMultiTexCoord3ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8382,7 +8382,7 @@ .globl glMultiTexCoord3sARB .type glMultiTexCoord3sARB,#function glMultiTexCoord3sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8403,7 +8403,7 @@ .globl glMultiTexCoord3svARB .type glMultiTexCoord3svARB,#function glMultiTexCoord3svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8424,7 +8424,7 @@ .globl glMultiTexCoord4dARB .type glMultiTexCoord4dARB,#function glMultiTexCoord4dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8445,7 +8445,7 @@ .globl glMultiTexCoord4dvARB .type glMultiTexCoord4dvARB,#function glMultiTexCoord4dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8466,7 +8466,7 @@ .globl glMultiTexCoord4fARB .type glMultiTexCoord4fARB,#function glMultiTexCoord4fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8487,7 +8487,7 @@ .globl glMultiTexCoord4fvARB .type glMultiTexCoord4fvARB,#function glMultiTexCoord4fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8508,7 +8508,7 @@ .globl glMultiTexCoord4iARB .type glMultiTexCoord4iARB,#function glMultiTexCoord4iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8529,7 +8529,7 @@ .globl glMultiTexCoord4ivARB .type glMultiTexCoord4ivARB,#function glMultiTexCoord4ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8550,7 +8550,7 @@ .globl glMultiTexCoord4sARB .type glMultiTexCoord4sARB,#function glMultiTexCoord4sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8571,7 +8571,7 @@ .globl glMultiTexCoord4svARB .type glMultiTexCoord4svARB,#function glMultiTexCoord4svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8592,7 +8592,7 @@ .globl glLoadTransposeMatrixfARB .type glLoadTransposeMatrixfARB,#function glLoadTransposeMatrixfARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8613,7 +8613,7 @@ .globl glLoadTransposeMatrixdARB .type glLoadTransposeMatrixdARB,#function glLoadTransposeMatrixdARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8634,7 +8634,7 @@ .globl glMultTransposeMatrixfARB .type glMultTransposeMatrixfARB,#function glMultTransposeMatrixfARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8655,7 +8655,7 @@ .globl glMultTransposeMatrixdARB .type glMultTransposeMatrixdARB,#function glMultTransposeMatrixdARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8676,7 +8676,7 @@ .globl glSampleCoverageARB .type glSampleCoverageARB,#function glSampleCoverageARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8697,7 +8697,7 @@ .globl gl__unused413 .type gl__unused413,#function gl__unused413: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8718,7 +8718,7 @@ .globl glCompressedTexImage3DARB .type glCompressedTexImage3DARB,#function glCompressedTexImage3DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8739,7 +8739,7 @@ .globl glCompressedTexImage2DARB .type glCompressedTexImage2DARB,#function glCompressedTexImage2DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8760,7 +8760,7 @@ .globl glCompressedTexImage1DARB .type glCompressedTexImage1DARB,#function glCompressedTexImage1DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8781,7 +8781,7 @@ .globl glCompressedTexSubImage3DARB .type glCompressedTexSubImage3DARB,#function glCompressedTexSubImage3DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8802,7 +8802,7 @@ .globl glCompressedTexSubImage2DARB .type glCompressedTexSubImage2DARB,#function glCompressedTexSubImage2DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8823,7 +8823,7 @@ .globl glCompressedTexSubImage1DARB .type glCompressedTexSubImage1DARB,#function glCompressedTexSubImage1DARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8844,7 +8844,7 @@ .globl glGetCompressedTexImageARB .type glGetCompressedTexImageARB,#function glGetCompressedTexImageARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8865,7 +8865,7 @@ .globl glActiveTexture .type glActiveTexture,#function glActiveTexture: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8886,7 +8886,7 @@ .globl glClientActiveTexture .type glClientActiveTexture,#function glClientActiveTexture: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8907,7 +8907,7 @@ .globl glMultiTexCoord1d .type glMultiTexCoord1d,#function glMultiTexCoord1d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8928,7 +8928,7 @@ .globl glMultiTexCoord1dv .type glMultiTexCoord1dv,#function glMultiTexCoord1dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8949,7 +8949,7 @@ .globl glMultiTexCoord1f .type glMultiTexCoord1f,#function glMultiTexCoord1f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8970,7 +8970,7 @@ .globl glMultiTexCoord1fv .type glMultiTexCoord1fv,#function glMultiTexCoord1fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -8991,7 +8991,7 @@ .globl glMultiTexCoord1i .type glMultiTexCoord1i,#function glMultiTexCoord1i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9012,7 +9012,7 @@ .globl glMultiTexCoord1iv .type glMultiTexCoord1iv,#function glMultiTexCoord1iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9033,7 +9033,7 @@ .globl glMultiTexCoord1s .type glMultiTexCoord1s,#function glMultiTexCoord1s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9054,7 +9054,7 @@ .globl glMultiTexCoord1sv .type glMultiTexCoord1sv,#function glMultiTexCoord1sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9075,7 +9075,7 @@ .globl glMultiTexCoord2d .type glMultiTexCoord2d,#function glMultiTexCoord2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9096,7 +9096,7 @@ .globl glMultiTexCoord2dv .type glMultiTexCoord2dv,#function glMultiTexCoord2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9117,7 +9117,7 @@ .globl glMultiTexCoord2f .type glMultiTexCoord2f,#function glMultiTexCoord2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9138,7 +9138,7 @@ .globl glMultiTexCoord2fv .type glMultiTexCoord2fv,#function glMultiTexCoord2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9159,7 +9159,7 @@ .globl glMultiTexCoord2i .type glMultiTexCoord2i,#function glMultiTexCoord2i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9180,7 +9180,7 @@ .globl glMultiTexCoord2iv .type glMultiTexCoord2iv,#function glMultiTexCoord2iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9201,7 +9201,7 @@ .globl glMultiTexCoord2s .type glMultiTexCoord2s,#function glMultiTexCoord2s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9222,7 +9222,7 @@ .globl glMultiTexCoord2sv .type glMultiTexCoord2sv,#function glMultiTexCoord2sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9243,7 +9243,7 @@ .globl glMultiTexCoord3d .type glMultiTexCoord3d,#function glMultiTexCoord3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9264,7 +9264,7 @@ .globl glMultiTexCoord3dv .type glMultiTexCoord3dv,#function glMultiTexCoord3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9285,7 +9285,7 @@ .globl glMultiTexCoord3f .type glMultiTexCoord3f,#function glMultiTexCoord3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9306,7 +9306,7 @@ .globl glMultiTexCoord3fv .type glMultiTexCoord3fv,#function glMultiTexCoord3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9327,7 +9327,7 @@ .globl glMultiTexCoord3i .type glMultiTexCoord3i,#function glMultiTexCoord3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9348,7 +9348,7 @@ .globl glMultiTexCoord3iv .type glMultiTexCoord3iv,#function glMultiTexCoord3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9369,7 +9369,7 @@ .globl glMultiTexCoord3s .type glMultiTexCoord3s,#function glMultiTexCoord3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9390,7 +9390,7 @@ .globl glMultiTexCoord3sv .type glMultiTexCoord3sv,#function glMultiTexCoord3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9411,7 +9411,7 @@ .globl glMultiTexCoord4d .type glMultiTexCoord4d,#function glMultiTexCoord4d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9432,7 +9432,7 @@ .globl glMultiTexCoord4dv .type glMultiTexCoord4dv,#function glMultiTexCoord4dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9453,7 +9453,7 @@ .globl glMultiTexCoord4f .type glMultiTexCoord4f,#function glMultiTexCoord4f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9474,7 +9474,7 @@ .globl glMultiTexCoord4fv .type glMultiTexCoord4fv,#function glMultiTexCoord4fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9495,7 +9495,7 @@ .globl glMultiTexCoord4i .type glMultiTexCoord4i,#function glMultiTexCoord4i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9516,7 +9516,7 @@ .globl glMultiTexCoord4iv .type glMultiTexCoord4iv,#function glMultiTexCoord4iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9537,7 +9537,7 @@ .globl glMultiTexCoord4s .type glMultiTexCoord4s,#function glMultiTexCoord4s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9558,7 +9558,7 @@ .globl glMultiTexCoord4sv .type glMultiTexCoord4sv,#function glMultiTexCoord4sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9579,7 +9579,7 @@ .globl glLoadTransposeMatrixf .type glLoadTransposeMatrixf,#function glLoadTransposeMatrixf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9600,7 +9600,7 @@ .globl glLoadTransposeMatrixd .type glLoadTransposeMatrixd,#function glLoadTransposeMatrixd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9621,7 +9621,7 @@ .globl glMultTransposeMatrixf .type glMultTransposeMatrixf,#function glMultTransposeMatrixf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9642,7 +9642,7 @@ .globl glMultTransposeMatrixd .type glMultTransposeMatrixd,#function glMultTransposeMatrixd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9663,7 +9663,7 @@ .globl glSampleCoverage .type glSampleCoverage,#function glSampleCoverage: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9684,7 +9684,7 @@ .globl glCompressedTexImage3D .type glCompressedTexImage3D,#function glCompressedTexImage3D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9705,7 +9705,7 @@ .globl glCompressedTexImage2D .type glCompressedTexImage2D,#function glCompressedTexImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9726,7 +9726,7 @@ .globl glCompressedTexImage1D .type glCompressedTexImage1D,#function glCompressedTexImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9747,7 +9747,7 @@ .globl glCompressedTexSubImage3D .type glCompressedTexSubImage3D,#function glCompressedTexSubImage3D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9768,7 +9768,7 @@ .globl glCompressedTexSubImage2D .type glCompressedTexSubImage2D,#function glCompressedTexSubImage2D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9789,7 +9789,7 @@ .globl glCompressedTexSubImage1D .type glCompressedTexSubImage1D,#function glCompressedTexSubImage1D: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9810,7 +9810,7 @@ .globl glGetCompressedTexImage .type glGetCompressedTexImage,#function glGetCompressedTexImage: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9831,7 +9831,7 @@ .globl glBlendColorEXT .type glBlendColorEXT,#function glBlendColorEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9852,7 +9852,7 @@ .globl glPolygonOffsetEXT .type glPolygonOffsetEXT,#function glPolygonOffsetEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9873,7 +9873,7 @@ .globl glTexImage3DEXT .type glTexImage3DEXT,#function glTexImage3DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9894,7 +9894,7 @@ .globl glTexSubImage3DEXT .type glTexSubImage3DEXT,#function glTexSubImage3DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9915,7 +9915,7 @@ .globl glGetTexFilterFuncSGIS .type glGetTexFilterFuncSGIS,#function glGetTexFilterFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9936,7 +9936,7 @@ .globl glTexFilterFuncSGIS .type glTexFilterFuncSGIS,#function glTexFilterFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9957,7 +9957,7 @@ .globl glTexSubImage1DEXT .type glTexSubImage1DEXT,#function glTexSubImage1DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9978,7 +9978,7 @@ .globl glTexSubImage2DEXT .type glTexSubImage2DEXT,#function glTexSubImage2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -9999,7 +9999,7 @@ .globl glCopyTexImage1DEXT .type glCopyTexImage1DEXT,#function glCopyTexImage1DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10020,7 +10020,7 @@ .globl glCopyTexImage2DEXT .type glCopyTexImage2DEXT,#function glCopyTexImage2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10041,7 +10041,7 @@ .globl glCopyTexSubImage1DEXT .type glCopyTexSubImage1DEXT,#function glCopyTexSubImage1DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10062,7 +10062,7 @@ .globl glCopyTexSubImage2DEXT .type glCopyTexSubImage2DEXT,#function glCopyTexSubImage2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10083,7 +10083,7 @@ .globl glCopyTexSubImage3DEXT .type glCopyTexSubImage3DEXT,#function glCopyTexSubImage3DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10104,7 +10104,7 @@ .globl glGetHistogramEXT .type glGetHistogramEXT,#function glGetHistogramEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10125,7 +10125,7 @@ .globl glGetHistogramParameterfvEXT .type glGetHistogramParameterfvEXT,#function glGetHistogramParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10146,7 +10146,7 @@ .globl glGetHistogramParameterivEXT .type glGetHistogramParameterivEXT,#function glGetHistogramParameterivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10167,7 +10167,7 @@ .globl glGetMinmaxEXT .type glGetMinmaxEXT,#function glGetMinmaxEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10188,7 +10188,7 @@ .globl glGetMinmaxParameterfvEXT .type glGetMinmaxParameterfvEXT,#function glGetMinmaxParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10209,7 +10209,7 @@ .globl glGetMinmaxParameterivEXT .type glGetMinmaxParameterivEXT,#function glGetMinmaxParameterivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10230,7 +10230,7 @@ .globl glHistogramEXT .type glHistogramEXT,#function glHistogramEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10251,7 +10251,7 @@ .globl glMinmaxEXT .type glMinmaxEXT,#function glMinmaxEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10272,7 +10272,7 @@ .globl glResetHistogramEXT .type glResetHistogramEXT,#function glResetHistogramEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10293,7 +10293,7 @@ .globl glResetMinmaxEXT .type glResetMinmaxEXT,#function glResetMinmaxEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10314,7 +10314,7 @@ .globl glConvolutionFilter1DEXT .type glConvolutionFilter1DEXT,#function glConvolutionFilter1DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10335,7 +10335,7 @@ .globl glConvolutionFilter2DEXT .type glConvolutionFilter2DEXT,#function glConvolutionFilter2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10356,7 +10356,7 @@ .globl glConvolutionParameterfEXT .type glConvolutionParameterfEXT,#function glConvolutionParameterfEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10377,7 +10377,7 @@ .globl glConvolutionParameterfvEXT .type glConvolutionParameterfvEXT,#function glConvolutionParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10398,7 +10398,7 @@ .globl glConvolutionParameteriEXT .type glConvolutionParameteriEXT,#function glConvolutionParameteriEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10419,7 +10419,7 @@ .globl glConvolutionParameterivEXT .type glConvolutionParameterivEXT,#function glConvolutionParameterivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10440,7 +10440,7 @@ .globl glCopyConvolutionFilter1DEXT .type glCopyConvolutionFilter1DEXT,#function glCopyConvolutionFilter1DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10461,7 +10461,7 @@ .globl glCopyConvolutionFilter2DEXT .type glCopyConvolutionFilter2DEXT,#function glCopyConvolutionFilter2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10482,7 +10482,7 @@ .globl glGetConvolutionFilterEXT .type glGetConvolutionFilterEXT,#function glGetConvolutionFilterEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10503,7 +10503,7 @@ .globl glGetConvolutionParameterfvEXT .type glGetConvolutionParameterfvEXT,#function glGetConvolutionParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10524,7 +10524,7 @@ .globl glGetConvolutionParameterivEXT .type glGetConvolutionParameterivEXT,#function glGetConvolutionParameterivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10545,7 +10545,7 @@ .globl glGetSeparableFilterEXT .type glGetSeparableFilterEXT,#function glGetSeparableFilterEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10566,7 +10566,7 @@ .globl glSeparableFilter2DEXT .type glSeparableFilter2DEXT,#function glSeparableFilter2DEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10587,7 +10587,7 @@ .globl glColorTableSGI .type glColorTableSGI,#function glColorTableSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10608,7 +10608,7 @@ .globl glColorTableParameterfvSGI .type glColorTableParameterfvSGI,#function glColorTableParameterfvSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10629,7 +10629,7 @@ .globl glColorTableParameterivSGI .type glColorTableParameterivSGI,#function glColorTableParameterivSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10650,7 +10650,7 @@ .globl glCopyColorTableSGI .type glCopyColorTableSGI,#function glCopyColorTableSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10671,7 +10671,7 @@ .globl glGetColorTableSGI .type glGetColorTableSGI,#function glGetColorTableSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10692,7 +10692,7 @@ .globl glGetColorTableParameterfvSGI .type glGetColorTableParameterfvSGI,#function glGetColorTableParameterfvSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10713,7 +10713,7 @@ .globl glGetColorTableParameterivSGI .type glGetColorTableParameterivSGI,#function glGetColorTableParameterivSGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10734,7 +10734,7 @@ .globl glPixelTexGenSGIX .type glPixelTexGenSGIX,#function glPixelTexGenSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10755,7 +10755,7 @@ .globl glPixelTexGenParameteriSGIS .type glPixelTexGenParameteriSGIS,#function glPixelTexGenParameteriSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10776,7 +10776,7 @@ .globl glPixelTexGenParameterivSGIS .type glPixelTexGenParameterivSGIS,#function glPixelTexGenParameterivSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10797,7 +10797,7 @@ .globl glPixelTexGenParameterfSGIS .type glPixelTexGenParameterfSGIS,#function glPixelTexGenParameterfSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10818,7 +10818,7 @@ .globl glPixelTexGenParameterfvSGIS .type glPixelTexGenParameterfvSGIS,#function glPixelTexGenParameterfvSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10839,7 +10839,7 @@ .globl glGetPixelTexGenParameterivSGIS .type glGetPixelTexGenParameterivSGIS,#function glGetPixelTexGenParameterivSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10860,7 +10860,7 @@ .globl glGetPixelTexGenParameterfvSGIS .type glGetPixelTexGenParameterfvSGIS,#function glGetPixelTexGenParameterfvSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10881,7 +10881,7 @@ .globl glTexImage4DSGIS .type glTexImage4DSGIS,#function glTexImage4DSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10902,7 +10902,7 @@ .globl glTexSubImage4DSGIS .type glTexSubImage4DSGIS,#function glTexSubImage4DSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10923,7 +10923,7 @@ .globl glAreTexturesResidentEXT .type glAreTexturesResidentEXT,#function glAreTexturesResidentEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10944,7 +10944,7 @@ .globl glBindTextureEXT .type glBindTextureEXT,#function glBindTextureEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10965,7 +10965,7 @@ .globl glDeleteTexturesEXT .type glDeleteTexturesEXT,#function glDeleteTexturesEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -10986,7 +10986,7 @@ .globl glGenTexturesEXT .type glGenTexturesEXT,#function glGenTexturesEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11007,7 +11007,7 @@ .globl glIsTextureEXT .type glIsTextureEXT,#function glIsTextureEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11028,7 +11028,7 @@ .globl glPrioritizeTexturesEXT .type glPrioritizeTexturesEXT,#function glPrioritizeTexturesEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11049,7 +11049,7 @@ .globl glDetailTexFuncSGIS .type glDetailTexFuncSGIS,#function glDetailTexFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11070,7 +11070,7 @@ .globl glGetDetailTexFuncSGIS .type glGetDetailTexFuncSGIS,#function glGetDetailTexFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11091,7 +11091,7 @@ .globl glSharpenTexFuncSGIS .type glSharpenTexFuncSGIS,#function glSharpenTexFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11112,7 +11112,7 @@ .globl glGetSharpenTexFuncSGIS .type glGetSharpenTexFuncSGIS,#function glGetSharpenTexFuncSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11133,7 +11133,7 @@ .globl glSampleMaskSGIS .type glSampleMaskSGIS,#function glSampleMaskSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11154,7 +11154,7 @@ .globl glSamplePatternSGIS .type glSamplePatternSGIS,#function glSamplePatternSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11175,7 +11175,7 @@ .globl glArrayElementEXT .type glArrayElementEXT,#function glArrayElementEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11196,7 +11196,7 @@ .globl glColorPointerEXT .type glColorPointerEXT,#function glColorPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11217,7 +11217,7 @@ .globl glDrawArraysEXT .type glDrawArraysEXT,#function glDrawArraysEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11238,7 +11238,7 @@ .globl glEdgeFlagPointerEXT .type glEdgeFlagPointerEXT,#function glEdgeFlagPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11259,7 +11259,7 @@ .globl glGetPointervEXT .type glGetPointervEXT,#function glGetPointervEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11280,7 +11280,7 @@ .globl glIndexPointerEXT .type glIndexPointerEXT,#function glIndexPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11301,7 +11301,7 @@ .globl glNormalPointerEXT .type glNormalPointerEXT,#function glNormalPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11322,7 +11322,7 @@ .globl glTexCoordPointerEXT .type glTexCoordPointerEXT,#function glTexCoordPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11343,7 +11343,7 @@ .globl glVertexPointerEXT .type glVertexPointerEXT,#function glVertexPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11364,7 +11364,7 @@ .globl glBlendEquationEXT .type glBlendEquationEXT,#function glBlendEquationEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11385,7 +11385,7 @@ .globl glSpriteParameterfSGIX .type glSpriteParameterfSGIX,#function glSpriteParameterfSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11406,7 +11406,7 @@ .globl glSpriteParameterfvSGIX .type glSpriteParameterfvSGIX,#function glSpriteParameterfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11427,7 +11427,7 @@ .globl glSpriteParameteriSGIX .type glSpriteParameteriSGIX,#function glSpriteParameteriSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11448,7 +11448,7 @@ .globl glSpriteParameterivSGIX .type glSpriteParameterivSGIX,#function glSpriteParameterivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11469,7 +11469,7 @@ .globl glPointParameterfEXT .type glPointParameterfEXT,#function glPointParameterfEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11490,7 +11490,7 @@ .globl glPointParameterfvEXT .type glPointParameterfvEXT,#function glPointParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11511,7 +11511,7 @@ .globl glPointParameterfARB .type glPointParameterfARB,#function glPointParameterfARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11532,7 +11532,7 @@ .globl glPointParameterfvARB .type glPointParameterfvARB,#function glPointParameterfvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11553,7 +11553,7 @@ .globl glPointParameterfSGIS .type glPointParameterfSGIS,#function glPointParameterfSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11574,7 +11574,7 @@ .globl glPointParameterfvSGIS .type glPointParameterfvSGIS,#function glPointParameterfvSGIS: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11595,7 +11595,7 @@ .globl glGetInstrumentsSGIX .type glGetInstrumentsSGIX,#function glGetInstrumentsSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11616,7 +11616,7 @@ .globl glInstrumentsBufferSGIX .type glInstrumentsBufferSGIX,#function glInstrumentsBufferSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11637,7 +11637,7 @@ .globl glPollInstrumentsSGIX .type glPollInstrumentsSGIX,#function glPollInstrumentsSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11658,7 +11658,7 @@ .globl glReadInstrumentsSGIX .type glReadInstrumentsSGIX,#function glReadInstrumentsSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11679,7 +11679,7 @@ .globl glStartInstrumentsSGIX .type glStartInstrumentsSGIX,#function glStartInstrumentsSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11700,7 +11700,7 @@ .globl glStopInstrumentsSGIX .type glStopInstrumentsSGIX,#function glStopInstrumentsSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11721,7 +11721,7 @@ .globl glFrameZoomSGIX .type glFrameZoomSGIX,#function glFrameZoomSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11742,7 +11742,7 @@ .globl glTagSampleBufferSGIX .type glTagSampleBufferSGIX,#function glTagSampleBufferSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11763,7 +11763,7 @@ .globl glReferencePlaneSGIX .type glReferencePlaneSGIX,#function glReferencePlaneSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11784,7 +11784,7 @@ .globl glFlushRasterSGIX .type glFlushRasterSGIX,#function glFlushRasterSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11805,7 +11805,7 @@ .globl glColorSubTableEXT .type glColorSubTableEXT,#function glColorSubTableEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11826,7 +11826,7 @@ .globl glCopyColorSubTableEXT .type glCopyColorSubTableEXT,#function glCopyColorSubTableEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11847,7 +11847,7 @@ .globl glHintPGI .type glHintPGI,#function glHintPGI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11868,7 +11868,7 @@ .globl glColorTableEXT .type glColorTableEXT,#function glColorTableEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11889,7 +11889,7 @@ .globl glGetColorTableEXT .type glGetColorTableEXT,#function glGetColorTableEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11910,7 +11910,7 @@ .globl glGetColorTableParameterivEXT .type glGetColorTableParameterivEXT,#function glGetColorTableParameterivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11931,7 +11931,7 @@ .globl glGetColorTableParameterfvEXT .type glGetColorTableParameterfvEXT,#function glGetColorTableParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11952,7 +11952,7 @@ .globl glGetListParameterfvSGIX .type glGetListParameterfvSGIX,#function glGetListParameterfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11973,7 +11973,7 @@ .globl glGetListParameterivSGIX .type glGetListParameterivSGIX,#function glGetListParameterivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -11994,7 +11994,7 @@ .globl glListParameterfSGIX .type glListParameterfSGIX,#function glListParameterfSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12015,7 +12015,7 @@ .globl glListParameterfvSGIX .type glListParameterfvSGIX,#function glListParameterfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12036,7 +12036,7 @@ .globl glListParameteriSGIX .type glListParameteriSGIX,#function glListParameteriSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12057,7 +12057,7 @@ .globl glListParameterivSGIX .type glListParameterivSGIX,#function glListParameterivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12078,7 +12078,7 @@ .globl glIndexMaterialEXT .type glIndexMaterialEXT,#function glIndexMaterialEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12099,7 +12099,7 @@ .globl glIndexFuncEXT .type glIndexFuncEXT,#function glIndexFuncEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12120,7 +12120,7 @@ .globl glLockArraysEXT .type glLockArraysEXT,#function glLockArraysEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12141,7 +12141,7 @@ .globl glUnlockArraysEXT .type glUnlockArraysEXT,#function glUnlockArraysEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12162,7 +12162,7 @@ .globl glCullParameterdvEXT .type glCullParameterdvEXT,#function glCullParameterdvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12183,7 +12183,7 @@ .globl glCullParameterfvEXT .type glCullParameterfvEXT,#function glCullParameterfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12204,7 +12204,7 @@ .globl glFragmentColorMaterialSGIX .type glFragmentColorMaterialSGIX,#function glFragmentColorMaterialSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12225,7 +12225,7 @@ .globl glFragmentLightfSGIX .type glFragmentLightfSGIX,#function glFragmentLightfSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12246,7 +12246,7 @@ .globl glFragmentLightfvSGIX .type glFragmentLightfvSGIX,#function glFragmentLightfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12267,7 +12267,7 @@ .globl glFragmentLightiSGIX .type glFragmentLightiSGIX,#function glFragmentLightiSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12288,7 +12288,7 @@ .globl glFragmentLightivSGIX .type glFragmentLightivSGIX,#function glFragmentLightivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12309,7 +12309,7 @@ .globl glFragmentLightModelfSGIX .type glFragmentLightModelfSGIX,#function glFragmentLightModelfSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12330,7 +12330,7 @@ .globl glFragmentLightModelfvSGIX .type glFragmentLightModelfvSGIX,#function glFragmentLightModelfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12351,7 +12351,7 @@ .globl glFragmentLightModeliSGIX .type glFragmentLightModeliSGIX,#function glFragmentLightModeliSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12372,7 +12372,7 @@ .globl glFragmentLightModelivSGIX .type glFragmentLightModelivSGIX,#function glFragmentLightModelivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12393,7 +12393,7 @@ .globl glFragmentMaterialfSGIX .type glFragmentMaterialfSGIX,#function glFragmentMaterialfSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12414,7 +12414,7 @@ .globl glFragmentMaterialfvSGIX .type glFragmentMaterialfvSGIX,#function glFragmentMaterialfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12435,7 +12435,7 @@ .globl glFragmentMaterialiSGIX .type glFragmentMaterialiSGIX,#function glFragmentMaterialiSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12456,7 +12456,7 @@ .globl glFragmentMaterialivSGIX .type glFragmentMaterialivSGIX,#function glFragmentMaterialivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12477,7 +12477,7 @@ .globl glGetFragmentLightfvSGIX .type glGetFragmentLightfvSGIX,#function glGetFragmentLightfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12498,7 +12498,7 @@ .globl glGetFragmentLightivSGIX .type glGetFragmentLightivSGIX,#function glGetFragmentLightivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12519,7 +12519,7 @@ .globl glGetFragmentMaterialfvSGIX .type glGetFragmentMaterialfvSGIX,#function glGetFragmentMaterialfvSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12540,7 +12540,7 @@ .globl glGetFragmentMaterialivSGIX .type glGetFragmentMaterialivSGIX,#function glGetFragmentMaterialivSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12561,7 +12561,7 @@ .globl glLightEnviSGIX .type glLightEnviSGIX,#function glLightEnviSGIX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12582,7 +12582,7 @@ .globl glDrawRangeElementsEXT .type glDrawRangeElementsEXT,#function glDrawRangeElementsEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12603,7 +12603,7 @@ .globl glSecondaryColor3bEXT .type glSecondaryColor3bEXT,#function glSecondaryColor3bEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12624,7 +12624,7 @@ .globl glSecondaryColor3bvEXT .type glSecondaryColor3bvEXT,#function glSecondaryColor3bvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12645,7 +12645,7 @@ .globl glSecondaryColor3dEXT .type glSecondaryColor3dEXT,#function glSecondaryColor3dEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12666,7 +12666,7 @@ .globl glSecondaryColor3dvEXT .type glSecondaryColor3dvEXT,#function glSecondaryColor3dvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12687,7 +12687,7 @@ .globl glSecondaryColor3fEXT .type glSecondaryColor3fEXT,#function glSecondaryColor3fEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12708,7 +12708,7 @@ .globl glSecondaryColor3fvEXT .type glSecondaryColor3fvEXT,#function glSecondaryColor3fvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12729,7 +12729,7 @@ .globl glSecondaryColor3iEXT .type glSecondaryColor3iEXT,#function glSecondaryColor3iEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12750,7 +12750,7 @@ .globl glSecondaryColor3ivEXT .type glSecondaryColor3ivEXT,#function glSecondaryColor3ivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12771,7 +12771,7 @@ .globl glSecondaryColor3sEXT .type glSecondaryColor3sEXT,#function glSecondaryColor3sEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12792,7 +12792,7 @@ .globl glSecondaryColor3svEXT .type glSecondaryColor3svEXT,#function glSecondaryColor3svEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12813,7 +12813,7 @@ .globl glSecondaryColor3ubEXT .type glSecondaryColor3ubEXT,#function glSecondaryColor3ubEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12834,7 +12834,7 @@ .globl glSecondaryColor3ubvEXT .type glSecondaryColor3ubvEXT,#function glSecondaryColor3ubvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12855,7 +12855,7 @@ .globl glSecondaryColor3uiEXT .type glSecondaryColor3uiEXT,#function glSecondaryColor3uiEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12876,7 +12876,7 @@ .globl glSecondaryColor3uivEXT .type glSecondaryColor3uivEXT,#function glSecondaryColor3uivEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12897,7 +12897,7 @@ .globl glSecondaryColor3usEXT .type glSecondaryColor3usEXT,#function glSecondaryColor3usEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12918,7 +12918,7 @@ .globl glSecondaryColor3usvEXT .type glSecondaryColor3usvEXT,#function glSecondaryColor3usvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12939,7 +12939,7 @@ .globl glSecondaryColorPointerEXT .type glSecondaryColorPointerEXT,#function glSecondaryColorPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12960,7 +12960,7 @@ .globl glMultiDrawArraysEXT .type glMultiDrawArraysEXT,#function glMultiDrawArraysEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -12981,7 +12981,7 @@ .globl glMultiDrawElementsEXT .type glMultiDrawElementsEXT,#function glMultiDrawElementsEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13002,7 +13002,7 @@ .globl glFogCoordfEXT .type glFogCoordfEXT,#function glFogCoordfEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13023,7 +13023,7 @@ .globl glFogCoordfvEXT .type glFogCoordfvEXT,#function glFogCoordfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13044,7 +13044,7 @@ .globl glFogCoorddEXT .type glFogCoorddEXT,#function glFogCoorddEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13065,7 +13065,7 @@ .globl glFogCoorddvEXT .type glFogCoorddvEXT,#function glFogCoorddvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13086,7 +13086,7 @@ .globl glFogCoordPointerEXT .type glFogCoordPointerEXT,#function glFogCoordPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13107,7 +13107,7 @@ .globl glBlendFuncSeparateEXT .type glBlendFuncSeparateEXT,#function glBlendFuncSeparateEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13128,7 +13128,7 @@ .globl glBlendFuncSeparateINGR .type glBlendFuncSeparateINGR,#function glBlendFuncSeparateINGR: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13149,7 +13149,7 @@ .globl glVertexWeightfEXT .type glVertexWeightfEXT,#function glVertexWeightfEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13170,7 +13170,7 @@ .globl glVertexWeightfvEXT .type glVertexWeightfvEXT,#function glVertexWeightfvEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13191,7 +13191,7 @@ .globl glVertexWeightPointerEXT .type glVertexWeightPointerEXT,#function glVertexWeightPointerEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13212,7 +13212,7 @@ .globl glFlushVertexArrayRangeNV .type glFlushVertexArrayRangeNV,#function glFlushVertexArrayRangeNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13233,7 +13233,7 @@ .globl glVertexArrayRangeNV .type glVertexArrayRangeNV,#function glVertexArrayRangeNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13254,7 +13254,7 @@ .globl glCombinerParameterfvNV .type glCombinerParameterfvNV,#function glCombinerParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13275,7 +13275,7 @@ .globl glCombinerParameterfNV .type glCombinerParameterfNV,#function glCombinerParameterfNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13296,7 +13296,7 @@ .globl glCombinerParameterivNV .type glCombinerParameterivNV,#function glCombinerParameterivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13317,7 +13317,7 @@ .globl glCombinerParameteriNV .type glCombinerParameteriNV,#function glCombinerParameteriNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13338,7 +13338,7 @@ .globl glCombinerInputNV .type glCombinerInputNV,#function glCombinerInputNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13359,7 +13359,7 @@ .globl glCombinerOutputNV .type glCombinerOutputNV,#function glCombinerOutputNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13380,7 +13380,7 @@ .globl glFinalCombinerInputNV .type glFinalCombinerInputNV,#function glFinalCombinerInputNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13401,7 +13401,7 @@ .globl glGetCombinerInputParameterfvNV .type glGetCombinerInputParameterfvNV,#function glGetCombinerInputParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13422,7 +13422,7 @@ .globl glGetCombinerInputParameterivNV .type glGetCombinerInputParameterivNV,#function glGetCombinerInputParameterivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13443,7 +13443,7 @@ .globl glGetCombinerOutputParameterfvNV .type glGetCombinerOutputParameterfvNV,#function glGetCombinerOutputParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13464,7 +13464,7 @@ .globl glGetCombinerOutputParameterivNV .type glGetCombinerOutputParameterivNV,#function glGetCombinerOutputParameterivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13485,7 +13485,7 @@ .globl glGetFinalCombinerInputParameterfvNV .type glGetFinalCombinerInputParameterfvNV,#function glGetFinalCombinerInputParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13506,7 +13506,7 @@ .globl glGetFinalCombinerInputParameterivNV .type glGetFinalCombinerInputParameterivNV,#function glGetFinalCombinerInputParameterivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13527,7 +13527,7 @@ .globl glResizeBuffersMESA .type glResizeBuffersMESA,#function glResizeBuffersMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13548,7 +13548,7 @@ .globl glWindowPos2dMESA .type glWindowPos2dMESA,#function glWindowPos2dMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13569,7 +13569,7 @@ .globl glWindowPos2dvMESA .type glWindowPos2dvMESA,#function glWindowPos2dvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13590,7 +13590,7 @@ .globl glWindowPos2fMESA .type glWindowPos2fMESA,#function glWindowPos2fMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13611,7 +13611,7 @@ .globl glWindowPos2fvMESA .type glWindowPos2fvMESA,#function glWindowPos2fvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13632,7 +13632,7 @@ .globl glWindowPos2iMESA .type glWindowPos2iMESA,#function glWindowPos2iMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13653,7 +13653,7 @@ .globl glWindowPos2ivMESA .type glWindowPos2ivMESA,#function glWindowPos2ivMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13674,7 +13674,7 @@ .globl glWindowPos2sMESA .type glWindowPos2sMESA,#function glWindowPos2sMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13695,7 +13695,7 @@ .globl glWindowPos2svMESA .type glWindowPos2svMESA,#function glWindowPos2svMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13716,7 +13716,7 @@ .globl glWindowPos3dMESA .type glWindowPos3dMESA,#function glWindowPos3dMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13737,7 +13737,7 @@ .globl glWindowPos3dvMESA .type glWindowPos3dvMESA,#function glWindowPos3dvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13758,7 +13758,7 @@ .globl glWindowPos3fMESA .type glWindowPos3fMESA,#function glWindowPos3fMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13779,7 +13779,7 @@ .globl glWindowPos3fvMESA .type glWindowPos3fvMESA,#function glWindowPos3fvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13800,7 +13800,7 @@ .globl glWindowPos3iMESA .type glWindowPos3iMESA,#function glWindowPos3iMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13821,7 +13821,7 @@ .globl glWindowPos3ivMESA .type glWindowPos3ivMESA,#function glWindowPos3ivMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13842,7 +13842,7 @@ .globl glWindowPos3sMESA .type glWindowPos3sMESA,#function glWindowPos3sMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13863,7 +13863,7 @@ .globl glWindowPos3svMESA .type glWindowPos3svMESA,#function glWindowPos3svMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13884,7 +13884,7 @@ .globl glWindowPos4dMESA .type glWindowPos4dMESA,#function glWindowPos4dMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13905,7 +13905,7 @@ .globl glWindowPos4dvMESA .type glWindowPos4dvMESA,#function glWindowPos4dvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13926,7 +13926,7 @@ .globl glWindowPos4fMESA .type glWindowPos4fMESA,#function glWindowPos4fMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13947,7 +13947,7 @@ .globl glWindowPos4fvMESA .type glWindowPos4fvMESA,#function glWindowPos4fvMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13968,7 +13968,7 @@ .globl glWindowPos4iMESA .type glWindowPos4iMESA,#function glWindowPos4iMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -13989,7 +13989,7 @@ .globl glWindowPos4ivMESA .type glWindowPos4ivMESA,#function glWindowPos4ivMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14010,7 +14010,7 @@ .globl glWindowPos4sMESA .type glWindowPos4sMESA,#function glWindowPos4sMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14031,7 +14031,7 @@ .globl glWindowPos4svMESA .type glWindowPos4svMESA,#function glWindowPos4svMESA: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14052,7 +14052,7 @@ .globl glMultiModeDrawArraysIBM .type glMultiModeDrawArraysIBM,#function glMultiModeDrawArraysIBM: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14073,7 +14073,7 @@ .globl glMultiModeDrawElementsIBM .type glMultiModeDrawElementsIBM,#function glMultiModeDrawElementsIBM: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14094,7 +14094,7 @@ .globl glTbufferMask3DFX .type glTbufferMask3DFX,#function glTbufferMask3DFX: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14115,7 +14115,7 @@ .globl glSampleMaskEXT .type glSampleMaskEXT,#function glSampleMaskEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14136,7 +14136,7 @@ .globl glSamplePatternEXT .type glSamplePatternEXT,#function glSamplePatternEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14157,7 +14157,7 @@ .globl glWindowPos2dARB .type glWindowPos2dARB,#function glWindowPos2dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14178,7 +14178,7 @@ .globl glWindowPos2fARB .type glWindowPos2fARB,#function glWindowPos2fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14199,7 +14199,7 @@ .globl glWindowPos2iARB .type glWindowPos2iARB,#function glWindowPos2iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14220,7 +14220,7 @@ .globl glWindowPos2sARB .type glWindowPos2sARB,#function glWindowPos2sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14241,7 +14241,7 @@ .globl glWindowPos2dvARB .type glWindowPos2dvARB,#function glWindowPos2dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14262,7 +14262,7 @@ .globl glWindowPos2fvARB .type glWindowPos2fvARB,#function glWindowPos2fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14283,7 +14283,7 @@ .globl glWindowPos2ivARB .type glWindowPos2ivARB,#function glWindowPos2ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14304,7 +14304,7 @@ .globl glWindowPos2svARB .type glWindowPos2svARB,#function glWindowPos2svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14325,7 +14325,7 @@ .globl glWindowPos3dARB .type glWindowPos3dARB,#function glWindowPos3dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14346,7 +14346,7 @@ .globl glWindowPos3fARB .type glWindowPos3fARB,#function glWindowPos3fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14367,7 +14367,7 @@ .globl glWindowPos3iARB .type glWindowPos3iARB,#function glWindowPos3iARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14388,7 +14388,7 @@ .globl glWindowPos3sARB .type glWindowPos3sARB,#function glWindowPos3sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14409,7 +14409,7 @@ .globl glWindowPos3dvARB .type glWindowPos3dvARB,#function glWindowPos3dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14430,7 +14430,7 @@ .globl glWindowPos3fvARB .type glWindowPos3fvARB,#function glWindowPos3fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14451,7 +14451,7 @@ .globl glWindowPos3ivARB .type glWindowPos3ivARB,#function glWindowPos3ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14472,7 +14472,7 @@ .globl glWindowPos3svARB .type glWindowPos3svARB,#function glWindowPos3svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14493,7 +14493,7 @@ .globl glAreProgramsResidentNV .type glAreProgramsResidentNV,#function glAreProgramsResidentNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14514,7 +14514,7 @@ .globl glBindProgramNV .type glBindProgramNV,#function glBindProgramNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14535,7 +14535,7 @@ .globl glDeleteProgramsNV .type glDeleteProgramsNV,#function glDeleteProgramsNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14556,7 +14556,7 @@ .globl glExecuteProgramNV .type glExecuteProgramNV,#function glExecuteProgramNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14577,7 +14577,7 @@ .globl glGenProgramsNV .type glGenProgramsNV,#function glGenProgramsNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14598,7 +14598,7 @@ .globl glGetProgramParameterdvNV .type glGetProgramParameterdvNV,#function glGetProgramParameterdvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14619,7 +14619,7 @@ .globl glGetProgramParameterfvNV .type glGetProgramParameterfvNV,#function glGetProgramParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14640,7 +14640,7 @@ .globl glGetProgramivNV .type glGetProgramivNV,#function glGetProgramivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14661,7 +14661,7 @@ .globl glGetProgramStringNV .type glGetProgramStringNV,#function glGetProgramStringNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14682,7 +14682,7 @@ .globl glGetTrackMatrixivNV .type glGetTrackMatrixivNV,#function glGetTrackMatrixivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14703,7 +14703,7 @@ .globl glGetVertexAttribdvNV .type glGetVertexAttribdvNV,#function glGetVertexAttribdvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14724,7 +14724,7 @@ .globl glGetVertexAttribfvNV .type glGetVertexAttribfvNV,#function glGetVertexAttribfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14745,7 +14745,7 @@ .globl glGetVertexAttribivNV .type glGetVertexAttribivNV,#function glGetVertexAttribivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14766,7 +14766,7 @@ .globl glGetVertexAttribPointervNV .type glGetVertexAttribPointervNV,#function glGetVertexAttribPointervNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14787,7 +14787,7 @@ .globl glIsProgramNV .type glIsProgramNV,#function glIsProgramNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14808,7 +14808,7 @@ .globl glLoadProgramNV .type glLoadProgramNV,#function glLoadProgramNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14829,7 +14829,7 @@ .globl glProgramParameter4dNV .type glProgramParameter4dNV,#function glProgramParameter4dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14850,7 +14850,7 @@ .globl glProgramParameter4dvNV .type glProgramParameter4dvNV,#function glProgramParameter4dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14871,7 +14871,7 @@ .globl glProgramParameter4fNV .type glProgramParameter4fNV,#function glProgramParameter4fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14892,7 +14892,7 @@ .globl glProgramParameter4fvNV .type glProgramParameter4fvNV,#function glProgramParameter4fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14913,7 +14913,7 @@ .globl glProgramParameters4dvNV .type glProgramParameters4dvNV,#function glProgramParameters4dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14934,7 +14934,7 @@ .globl glProgramParameters4fvNV .type glProgramParameters4fvNV,#function glProgramParameters4fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14955,7 +14955,7 @@ .globl glRequestResidentProgramsNV .type glRequestResidentProgramsNV,#function glRequestResidentProgramsNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14976,7 +14976,7 @@ .globl glTrackMatrixNV .type glTrackMatrixNV,#function glTrackMatrixNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -14997,7 +14997,7 @@ .globl glVertexAttribPointerNV .type glVertexAttribPointerNV,#function glVertexAttribPointerNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15018,7 +15018,7 @@ .globl glVertexAttrib1dNV .type glVertexAttrib1dNV,#function glVertexAttrib1dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15039,7 +15039,7 @@ .globl glVertexAttrib1dvNV .type glVertexAttrib1dvNV,#function glVertexAttrib1dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15060,7 +15060,7 @@ .globl glVertexAttrib1fNV .type glVertexAttrib1fNV,#function glVertexAttrib1fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15081,7 +15081,7 @@ .globl glVertexAttrib1fvNV .type glVertexAttrib1fvNV,#function glVertexAttrib1fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15102,7 +15102,7 @@ .globl glVertexAttrib1sNV .type glVertexAttrib1sNV,#function glVertexAttrib1sNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15123,7 +15123,7 @@ .globl glVertexAttrib1svNV .type glVertexAttrib1svNV,#function glVertexAttrib1svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15144,7 +15144,7 @@ .globl glVertexAttrib2dNV .type glVertexAttrib2dNV,#function glVertexAttrib2dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15165,7 +15165,7 @@ .globl glVertexAttrib2dvNV .type glVertexAttrib2dvNV,#function glVertexAttrib2dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15186,7 +15186,7 @@ .globl glVertexAttrib2fNV .type glVertexAttrib2fNV,#function glVertexAttrib2fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15207,7 +15207,7 @@ .globl glVertexAttrib2fvNV .type glVertexAttrib2fvNV,#function glVertexAttrib2fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15228,7 +15228,7 @@ .globl glVertexAttrib2sNV .type glVertexAttrib2sNV,#function glVertexAttrib2sNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15249,7 +15249,7 @@ .globl glVertexAttrib2svNV .type glVertexAttrib2svNV,#function glVertexAttrib2svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15270,7 +15270,7 @@ .globl glVertexAttrib3dNV .type glVertexAttrib3dNV,#function glVertexAttrib3dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15291,7 +15291,7 @@ .globl glVertexAttrib3dvNV .type glVertexAttrib3dvNV,#function glVertexAttrib3dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15312,7 +15312,7 @@ .globl glVertexAttrib3fNV .type glVertexAttrib3fNV,#function glVertexAttrib3fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15333,7 +15333,7 @@ .globl glVertexAttrib3fvNV .type glVertexAttrib3fvNV,#function glVertexAttrib3fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15354,7 +15354,7 @@ .globl glVertexAttrib3sNV .type glVertexAttrib3sNV,#function glVertexAttrib3sNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15375,7 +15375,7 @@ .globl glVertexAttrib3svNV .type glVertexAttrib3svNV,#function glVertexAttrib3svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15396,7 +15396,7 @@ .globl glVertexAttrib4dNV .type glVertexAttrib4dNV,#function glVertexAttrib4dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15417,7 +15417,7 @@ .globl glVertexAttrib4dvNV .type glVertexAttrib4dvNV,#function glVertexAttrib4dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15438,7 +15438,7 @@ .globl glVertexAttrib4fNV .type glVertexAttrib4fNV,#function glVertexAttrib4fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15459,7 +15459,7 @@ .globl glVertexAttrib4fvNV .type glVertexAttrib4fvNV,#function glVertexAttrib4fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15480,7 +15480,7 @@ .globl glVertexAttrib4sNV .type glVertexAttrib4sNV,#function glVertexAttrib4sNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15501,7 +15501,7 @@ .globl glVertexAttrib4svNV .type glVertexAttrib4svNV,#function glVertexAttrib4svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15522,7 +15522,7 @@ .globl glVertexAttrib4ubNV .type glVertexAttrib4ubNV,#function glVertexAttrib4ubNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15543,7 +15543,7 @@ .globl glVertexAttrib4ubvNV .type glVertexAttrib4ubvNV,#function glVertexAttrib4ubvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15564,7 +15564,7 @@ .globl glVertexAttribs1dvNV .type glVertexAttribs1dvNV,#function glVertexAttribs1dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15585,7 +15585,7 @@ .globl glVertexAttribs1fvNV .type glVertexAttribs1fvNV,#function glVertexAttribs1fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15606,7 +15606,7 @@ .globl glVertexAttribs1svNV .type glVertexAttribs1svNV,#function glVertexAttribs1svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15627,7 +15627,7 @@ .globl glVertexAttribs2dvNV .type glVertexAttribs2dvNV,#function glVertexAttribs2dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15648,7 +15648,7 @@ .globl glVertexAttribs2fvNV .type glVertexAttribs2fvNV,#function glVertexAttribs2fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15669,7 +15669,7 @@ .globl glVertexAttribs2svNV .type glVertexAttribs2svNV,#function glVertexAttribs2svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15690,7 +15690,7 @@ .globl glVertexAttribs3dvNV .type glVertexAttribs3dvNV,#function glVertexAttribs3dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15711,7 +15711,7 @@ .globl glVertexAttribs3fvNV .type glVertexAttribs3fvNV,#function glVertexAttribs3fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15732,7 +15732,7 @@ .globl glVertexAttribs3svNV .type glVertexAttribs3svNV,#function glVertexAttribs3svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15753,7 +15753,7 @@ .globl glVertexAttribs4dvNV .type glVertexAttribs4dvNV,#function glVertexAttribs4dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15774,7 +15774,7 @@ .globl glVertexAttribs4fvNV .type glVertexAttribs4fvNV,#function glVertexAttribs4fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15795,7 +15795,7 @@ .globl glVertexAttribs4svNV .type glVertexAttribs4svNV,#function glVertexAttribs4svNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15816,7 +15816,7 @@ .globl glVertexAttribs4ubvNV .type glVertexAttribs4ubvNV,#function glVertexAttribs4ubvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15837,7 +15837,7 @@ .globl glPointParameteriNV .type glPointParameteriNV,#function glPointParameteriNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15858,7 +15858,7 @@ .globl glPointParameterivNV .type glPointParameterivNV,#function glPointParameterivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15879,7 +15879,7 @@ .globl glBlendFuncSeparate .type glBlendFuncSeparate,#function glBlendFuncSeparate: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15900,7 +15900,7 @@ .globl glFogCoordf .type glFogCoordf,#function glFogCoordf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15921,7 +15921,7 @@ .globl glFogCoordfv .type glFogCoordfv,#function glFogCoordfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15942,7 +15942,7 @@ .globl glFogCoordd .type glFogCoordd,#function glFogCoordd: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15963,7 +15963,7 @@ .globl glFogCoorddv .type glFogCoorddv,#function glFogCoorddv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -15984,7 +15984,7 @@ .globl glFogCoordPointer .type glFogCoordPointer,#function glFogCoordPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16005,7 +16005,7 @@ .globl glMultiDrawArrays .type glMultiDrawArrays,#function glMultiDrawArrays: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16026,7 +16026,7 @@ .globl glMultiDrawElements .type glMultiDrawElements,#function glMultiDrawElements: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16047,7 +16047,7 @@ .globl glPointParameterf .type glPointParameterf,#function glPointParameterf: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16068,7 +16068,7 @@ .globl glPointParameterfv .type glPointParameterfv,#function glPointParameterfv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16089,7 +16089,7 @@ .globl glPointParameteri .type glPointParameteri,#function glPointParameteri: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16110,7 +16110,7 @@ .globl glPointParameteriv .type glPointParameteriv,#function glPointParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16131,7 +16131,7 @@ .globl glSecondaryColor3b .type glSecondaryColor3b,#function glSecondaryColor3b: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16152,7 +16152,7 @@ .globl glSecondaryColor3bv .type glSecondaryColor3bv,#function glSecondaryColor3bv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16173,7 +16173,7 @@ .globl glSecondaryColor3d .type glSecondaryColor3d,#function glSecondaryColor3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16194,7 +16194,7 @@ .globl glSecondaryColor3dv .type glSecondaryColor3dv,#function glSecondaryColor3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16215,7 +16215,7 @@ .globl glSecondaryColor3f .type glSecondaryColor3f,#function glSecondaryColor3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16236,7 +16236,7 @@ .globl glSecondaryColor3fv .type glSecondaryColor3fv,#function glSecondaryColor3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16257,7 +16257,7 @@ .globl glSecondaryColor3i .type glSecondaryColor3i,#function glSecondaryColor3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16278,7 +16278,7 @@ .globl glSecondaryColor3iv .type glSecondaryColor3iv,#function glSecondaryColor3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16299,7 +16299,7 @@ .globl glSecondaryColor3s .type glSecondaryColor3s,#function glSecondaryColor3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16320,7 +16320,7 @@ .globl glSecondaryColor3sv .type glSecondaryColor3sv,#function glSecondaryColor3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16341,7 +16341,7 @@ .globl glSecondaryColor3ub .type glSecondaryColor3ub,#function glSecondaryColor3ub: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16362,7 +16362,7 @@ .globl glSecondaryColor3ubv .type glSecondaryColor3ubv,#function glSecondaryColor3ubv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16383,7 +16383,7 @@ .globl glSecondaryColor3ui .type glSecondaryColor3ui,#function glSecondaryColor3ui: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16404,7 +16404,7 @@ .globl glSecondaryColor3uiv .type glSecondaryColor3uiv,#function glSecondaryColor3uiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16425,7 +16425,7 @@ .globl glSecondaryColor3us .type glSecondaryColor3us,#function glSecondaryColor3us: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16446,7 +16446,7 @@ .globl glSecondaryColor3usv .type glSecondaryColor3usv,#function glSecondaryColor3usv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16467,7 +16467,7 @@ .globl glSecondaryColorPointer .type glSecondaryColorPointer,#function glSecondaryColorPointer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16488,7 +16488,7 @@ .globl glWindowPos2d .type glWindowPos2d,#function glWindowPos2d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16509,7 +16509,7 @@ .globl glWindowPos2dv .type glWindowPos2dv,#function glWindowPos2dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16530,7 +16530,7 @@ .globl glWindowPos2f .type glWindowPos2f,#function glWindowPos2f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16551,7 +16551,7 @@ .globl glWindowPos2fv .type glWindowPos2fv,#function glWindowPos2fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16572,7 +16572,7 @@ .globl glWindowPos2i .type glWindowPos2i,#function glWindowPos2i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16593,7 +16593,7 @@ .globl glWindowPos2iv .type glWindowPos2iv,#function glWindowPos2iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16614,7 +16614,7 @@ .globl glWindowPos2s .type glWindowPos2s,#function glWindowPos2s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16635,7 +16635,7 @@ .globl glWindowPos2sv .type glWindowPos2sv,#function glWindowPos2sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16656,7 +16656,7 @@ .globl glWindowPos3d .type glWindowPos3d,#function glWindowPos3d: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16677,7 +16677,7 @@ .globl glWindowPos3dv .type glWindowPos3dv,#function glWindowPos3dv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16698,7 +16698,7 @@ .globl glWindowPos3f .type glWindowPos3f,#function glWindowPos3f: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16719,7 +16719,7 @@ .globl glWindowPos3fv .type glWindowPos3fv,#function glWindowPos3fv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16740,7 +16740,7 @@ .globl glWindowPos3i .type glWindowPos3i,#function glWindowPos3i: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16761,7 +16761,7 @@ .globl glWindowPos3iv .type glWindowPos3iv,#function glWindowPos3iv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16782,7 +16782,7 @@ .globl glWindowPos3s .type glWindowPos3s,#function glWindowPos3s: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16803,7 +16803,7 @@ .globl glWindowPos3sv .type glWindowPos3sv,#function glWindowPos3sv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16824,7 +16824,7 @@ .globl glActiveStencilFaceEXT .type glActiveStencilFaceEXT,#function glActiveStencilFaceEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16845,7 +16845,7 @@ .globl glDeleteFencesNV .type glDeleteFencesNV,#function glDeleteFencesNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16866,7 +16866,7 @@ .globl glGenFencesNV .type glGenFencesNV,#function glGenFencesNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16887,7 +16887,7 @@ .globl glIsFenceNV .type glIsFenceNV,#function glIsFenceNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16908,7 +16908,7 @@ .globl glTestFenceNV .type glTestFenceNV,#function glTestFenceNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16929,7 +16929,7 @@ .globl glGetFenceivNV .type glGetFenceivNV,#function glGetFenceivNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16950,7 +16950,7 @@ .globl glFinishFenceNV .type glFinishFenceNV,#function glFinishFenceNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16971,7 +16971,7 @@ .globl glSetFenceNV .type glSetFenceNV,#function glSetFenceNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -16992,7 +16992,7 @@ .globl glVertexAttrib1sARB .type glVertexAttrib1sARB,#function glVertexAttrib1sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17013,7 +17013,7 @@ .globl glVertexAttrib1fARB .type glVertexAttrib1fARB,#function glVertexAttrib1fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17034,7 +17034,7 @@ .globl glVertexAttrib1dARB .type glVertexAttrib1dARB,#function glVertexAttrib1dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17055,7 +17055,7 @@ .globl glVertexAttrib2sARB .type glVertexAttrib2sARB,#function glVertexAttrib2sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17076,7 +17076,7 @@ .globl glVertexAttrib2fARB .type glVertexAttrib2fARB,#function glVertexAttrib2fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17097,7 +17097,7 @@ .globl glVertexAttrib2dARB .type glVertexAttrib2dARB,#function glVertexAttrib2dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17118,7 +17118,7 @@ .globl glVertexAttrib3sARB .type glVertexAttrib3sARB,#function glVertexAttrib3sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17139,7 +17139,7 @@ .globl glVertexAttrib3fARB .type glVertexAttrib3fARB,#function glVertexAttrib3fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17160,7 +17160,7 @@ .globl glVertexAttrib3dARB .type glVertexAttrib3dARB,#function glVertexAttrib3dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17181,7 +17181,7 @@ .globl glVertexAttrib4sARB .type glVertexAttrib4sARB,#function glVertexAttrib4sARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17202,7 +17202,7 @@ .globl glVertexAttrib4fARB .type glVertexAttrib4fARB,#function glVertexAttrib4fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17223,7 +17223,7 @@ .globl glVertexAttrib4dARB .type glVertexAttrib4dARB,#function glVertexAttrib4dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17244,7 +17244,7 @@ .globl glVertexAttrib4NubARB .type glVertexAttrib4NubARB,#function glVertexAttrib4NubARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17265,7 +17265,7 @@ .globl glVertexAttrib1svARB .type glVertexAttrib1svARB,#function glVertexAttrib1svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17286,7 +17286,7 @@ .globl glVertexAttrib1fvARB .type glVertexAttrib1fvARB,#function glVertexAttrib1fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17307,7 +17307,7 @@ .globl glVertexAttrib1dvARB .type glVertexAttrib1dvARB,#function glVertexAttrib1dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17328,7 +17328,7 @@ .globl glVertexAttrib2svARB .type glVertexAttrib2svARB,#function glVertexAttrib2svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17349,7 +17349,7 @@ .globl glVertexAttrib2fvARB .type glVertexAttrib2fvARB,#function glVertexAttrib2fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17370,7 +17370,7 @@ .globl glVertexAttrib2dvARB .type glVertexAttrib2dvARB,#function glVertexAttrib2dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17391,7 +17391,7 @@ .globl glVertexAttrib3svARB .type glVertexAttrib3svARB,#function glVertexAttrib3svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17412,7 +17412,7 @@ .globl glVertexAttrib3fvARB .type glVertexAttrib3fvARB,#function glVertexAttrib3fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17433,7 +17433,7 @@ .globl glVertexAttrib3dvARB .type glVertexAttrib3dvARB,#function glVertexAttrib3dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17454,7 +17454,7 @@ .globl glVertexAttrib4bvARB .type glVertexAttrib4bvARB,#function glVertexAttrib4bvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17475,7 +17475,7 @@ .globl glVertexAttrib4svARB .type glVertexAttrib4svARB,#function glVertexAttrib4svARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17496,7 +17496,7 @@ .globl glVertexAttrib4ivARB .type glVertexAttrib4ivARB,#function glVertexAttrib4ivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17517,7 +17517,7 @@ .globl glVertexAttrib4ubvARB .type glVertexAttrib4ubvARB,#function glVertexAttrib4ubvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17538,7 +17538,7 @@ .globl glVertexAttrib4usvARB .type glVertexAttrib4usvARB,#function glVertexAttrib4usvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17559,7 +17559,7 @@ .globl glVertexAttrib4uivARB .type glVertexAttrib4uivARB,#function glVertexAttrib4uivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17580,7 +17580,7 @@ .globl glVertexAttrib4fvARB .type glVertexAttrib4fvARB,#function glVertexAttrib4fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17601,7 +17601,7 @@ .globl glVertexAttrib4dvARB .type glVertexAttrib4dvARB,#function glVertexAttrib4dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17622,7 +17622,7 @@ .globl glVertexAttrib4NbvARB .type glVertexAttrib4NbvARB,#function glVertexAttrib4NbvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17643,7 +17643,7 @@ .globl glVertexAttrib4NsvARB .type glVertexAttrib4NsvARB,#function glVertexAttrib4NsvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17664,7 +17664,7 @@ .globl glVertexAttrib4NivARB .type glVertexAttrib4NivARB,#function glVertexAttrib4NivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17685,7 +17685,7 @@ .globl glVertexAttrib4NubvARB .type glVertexAttrib4NubvARB,#function glVertexAttrib4NubvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17706,7 +17706,7 @@ .globl glVertexAttrib4NusvARB .type glVertexAttrib4NusvARB,#function glVertexAttrib4NusvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17727,7 +17727,7 @@ .globl glVertexAttrib4NuivARB .type glVertexAttrib4NuivARB,#function glVertexAttrib4NuivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17748,7 +17748,7 @@ .globl glVertexAttribPointerARB .type glVertexAttribPointerARB,#function glVertexAttribPointerARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17769,7 +17769,7 @@ .globl glEnableVertexAttribArrayARB .type glEnableVertexAttribArrayARB,#function glEnableVertexAttribArrayARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17790,7 +17790,7 @@ .globl glDisableVertexAttribArrayARB .type glDisableVertexAttribArrayARB,#function glDisableVertexAttribArrayARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17811,7 +17811,7 @@ .globl glProgramStringARB .type glProgramStringARB,#function glProgramStringARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17832,7 +17832,7 @@ .globl glBindProgramARB .type glBindProgramARB,#function glBindProgramARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17853,7 +17853,7 @@ .globl glDeleteProgramsARB .type glDeleteProgramsARB,#function glDeleteProgramsARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17874,7 +17874,7 @@ .globl glGenProgramsARB .type glGenProgramsARB,#function glGenProgramsARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17895,7 +17895,7 @@ .globl glIsProgramARB .type glIsProgramARB,#function glIsProgramARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17916,7 +17916,7 @@ .globl glProgramEnvParameter4dARB .type glProgramEnvParameter4dARB,#function glProgramEnvParameter4dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17937,7 +17937,7 @@ .globl glProgramEnvParameter4dvARB .type glProgramEnvParameter4dvARB,#function glProgramEnvParameter4dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17958,7 +17958,7 @@ .globl glProgramEnvParameter4fARB .type glProgramEnvParameter4fARB,#function glProgramEnvParameter4fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -17979,7 +17979,7 @@ .globl glProgramEnvParameter4fvARB .type glProgramEnvParameter4fvARB,#function glProgramEnvParameter4fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18000,7 +18000,7 @@ .globl glProgramLocalParameter4dARB .type glProgramLocalParameter4dARB,#function glProgramLocalParameter4dARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18021,7 +18021,7 @@ .globl glProgramLocalParameter4dvARB .type glProgramLocalParameter4dvARB,#function glProgramLocalParameter4dvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18042,7 +18042,7 @@ .globl glProgramLocalParameter4fARB .type glProgramLocalParameter4fARB,#function glProgramLocalParameter4fARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18063,7 +18063,7 @@ .globl glProgramLocalParameter4fvARB .type glProgramLocalParameter4fvARB,#function glProgramLocalParameter4fvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18084,7 +18084,7 @@ .globl glGetProgramEnvParameterdvARB .type glGetProgramEnvParameterdvARB,#function glGetProgramEnvParameterdvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18105,7 +18105,7 @@ .globl glGetProgramEnvParameterfvARB .type glGetProgramEnvParameterfvARB,#function glGetProgramEnvParameterfvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18126,7 +18126,7 @@ .globl glGetProgramLocalParameterdvARB .type glGetProgramLocalParameterdvARB,#function glGetProgramLocalParameterdvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18147,7 +18147,7 @@ .globl glGetProgramLocalParameterfvARB .type glGetProgramLocalParameterfvARB,#function glGetProgramLocalParameterfvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18168,7 +18168,7 @@ .globl glGetProgramivARB .type glGetProgramivARB,#function glGetProgramivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18189,7 +18189,7 @@ .globl glGetProgramStringARB .type glGetProgramStringARB,#function glGetProgramStringARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18210,7 +18210,7 @@ .globl glGetVertexAttribdvARB .type glGetVertexAttribdvARB,#function glGetVertexAttribdvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18231,7 +18231,7 @@ .globl glGetVertexAttribfvARB .type glGetVertexAttribfvARB,#function glGetVertexAttribfvARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18252,7 +18252,7 @@ .globl glGetVertexAttribivARB .type glGetVertexAttribivARB,#function glGetVertexAttribivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18273,7 +18273,7 @@ .globl glGetVertexAttribPointervARB .type glGetVertexAttribPointervARB,#function glGetVertexAttribPointervARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18294,7 +18294,7 @@ .globl glProgramNamedParameter4fNV .type glProgramNamedParameter4fNV,#function glProgramNamedParameter4fNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18315,7 +18315,7 @@ .globl glProgramNamedParameter4dNV .type glProgramNamedParameter4dNV,#function glProgramNamedParameter4dNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18336,7 +18336,7 @@ .globl glProgramNamedParameter4fvNV .type glProgramNamedParameter4fvNV,#function glProgramNamedParameter4fvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18357,7 +18357,7 @@ .globl glProgramNamedParameter4dvNV .type glProgramNamedParameter4dvNV,#function glProgramNamedParameter4dvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18378,7 +18378,7 @@ .globl glGetProgramNamedParameterfvNV .type glGetProgramNamedParameterfvNV,#function glGetProgramNamedParameterfvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18399,7 +18399,7 @@ .globl glGetProgramNamedParameterdvNV .type glGetProgramNamedParameterdvNV,#function glGetProgramNamedParameterdvNV: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18420,7 +18420,7 @@ .globl glBindBufferARB .type glBindBufferARB,#function glBindBufferARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18441,7 +18441,7 @@ .globl glBufferDataARB .type glBufferDataARB,#function glBufferDataARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18462,7 +18462,7 @@ .globl glBufferSubDataARB .type glBufferSubDataARB,#function glBufferSubDataARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18483,7 +18483,7 @@ .globl glDeleteBuffersARB .type glDeleteBuffersARB,#function glDeleteBuffersARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18504,7 +18504,7 @@ .globl glGenBuffersARB .type glGenBuffersARB,#function glGenBuffersARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18525,7 +18525,7 @@ .globl glGetBufferParameterivARB .type glGetBufferParameterivARB,#function glGetBufferParameterivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18546,7 +18546,7 @@ .globl glGetBufferPointervARB .type glGetBufferPointervARB,#function glGetBufferPointervARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18567,7 +18567,7 @@ .globl glGetBufferSubDataARB .type glGetBufferSubDataARB,#function glGetBufferSubDataARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18588,7 +18588,7 @@ .globl glIsBufferARB .type glIsBufferARB,#function glIsBufferARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18609,7 +18609,7 @@ .globl glMapBufferARB .type glMapBufferARB,#function glMapBufferARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18630,7 +18630,7 @@ .globl glUnmapBufferARB .type glUnmapBufferARB,#function glUnmapBufferARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18651,7 +18651,7 @@ .globl glDepthBoundsEXT .type glDepthBoundsEXT,#function glDepthBoundsEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18672,7 +18672,7 @@ .globl glGenQueriesARB .type glGenQueriesARB,#function glGenQueriesARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18693,7 +18693,7 @@ .globl glDeleteQueriesARB .type glDeleteQueriesARB,#function glDeleteQueriesARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18714,7 +18714,7 @@ .globl glIsQueryARB .type glIsQueryARB,#function glIsQueryARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18735,7 +18735,7 @@ .globl glBeginQueryARB .type glBeginQueryARB,#function glBeginQueryARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18756,7 +18756,7 @@ .globl glEndQueryARB .type glEndQueryARB,#function glEndQueryARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18777,7 +18777,7 @@ .globl glGetQueryivARB .type glGetQueryivARB,#function glGetQueryivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18798,7 +18798,7 @@ .globl glGetQueryObjectivARB .type glGetQueryObjectivARB,#function glGetQueryObjectivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18819,7 +18819,7 @@ .globl glGetQueryObjectuivARB .type glGetQueryObjectuivARB,#function glGetQueryObjectuivARB: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18840,7 +18840,7 @@ .globl glBindBuffer .type glBindBuffer,#function glBindBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18861,7 +18861,7 @@ .globl glBufferData .type glBufferData,#function glBufferData: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18882,7 +18882,7 @@ .globl glBufferSubData .type glBufferSubData,#function glBufferSubData: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18903,7 +18903,7 @@ .globl glDeleteBuffers .type glDeleteBuffers,#function glDeleteBuffers: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18924,7 +18924,7 @@ .globl glGenBuffers .type glGenBuffers,#function glGenBuffers: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18945,7 +18945,7 @@ .globl glGetBufferParameteriv .type glGetBufferParameteriv,#function glGetBufferParameteriv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18966,7 +18966,7 @@ .globl glGetBufferPointerv .type glGetBufferPointerv,#function glGetBufferPointerv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -18987,7 +18987,7 @@ .globl glGetBufferSubData .type glGetBufferSubData,#function glGetBufferSubData: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19008,7 +19008,7 @@ .globl glIsBuffer .type glIsBuffer,#function glIsBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19029,7 +19029,7 @@ .globl glMapBuffer .type glMapBuffer,#function glMapBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19050,7 +19050,7 @@ .globl glUnmapBuffer .type glUnmapBuffer,#function glUnmapBuffer: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19071,7 +19071,7 @@ .globl glGenQueries .type glGenQueries,#function glGenQueries: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19092,7 +19092,7 @@ .globl glDeleteQueries .type glDeleteQueries,#function glDeleteQueries: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19113,7 +19113,7 @@ .globl glIsQuery .type glIsQuery,#function glIsQuery: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19134,7 +19134,7 @@ .globl glBeginQuery .type glBeginQuery,#function glBeginQuery: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19155,7 +19155,7 @@ .globl glEndQuery .type glEndQuery,#function glEndQuery: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19176,7 +19176,7 @@ .globl glGetQueryiv .type glGetQueryiv,#function glGetQueryiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19197,7 +19197,7 @@ .globl glGetQueryObjectiv .type glGetQueryObjectiv,#function glGetQueryObjectiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19218,7 +19218,7 @@ .globl glGetQueryObjectuiv .type glGetQueryObjectuiv,#function glGetQueryObjectuiv: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19239,7 +19239,7 @@ .globl glBlendEquationSeparateEXT .type glBlendEquationSeparateEXT,#function glBlendEquationSeparateEXT: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 @@ -19260,7 +19260,7 @@ .globl glBlendEquationSeparateATI .type glBlendEquationSeparateATI,#function glBlendEquationSeparateATI: -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) sethi %hi(0x00000000), %g2 sethi %hi(0x00000000), %g1 or %g2, %lo(0x00000000), %g2 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/sparc/norm.S x11r682/xc/extras/Mesa/src/mesa/sparc/norm.S --- xc/extras/Mesa/src/mesa/sparc/norm.S 2004-06-16 11:19:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/sparc/norm.S 2004-12-15 02:51:03.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id: norm.S,v 1.3 2004/04/26 10:10:25 alanh Exp $ */ +/* $Id: norm.S,v 1.3.2.1 2004/11/22 19:27:21 brianp Exp $ */ #include "sparc_matrix.h" @@ -10,7 +10,7 @@ .text -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) #define STACK_VAR_OFF (2047 + (8 * 16)) #else #define STACK_VAR_OFF (4 * 16) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/sparc/sparc.c x11r682/xc/extras/Mesa/src/mesa/sparc/sparc.c --- xc/extras/Mesa/src/mesa/sparc/sparc.c 2004-07-22 08:53:06.000000000 +0200 +++ xc/extras/Mesa/src/mesa/sparc/sparc.c 2004-12-15 02:51:03.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.3 * * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. * @@ -27,12 +27,13 @@ */ +#include "sparc.h" + #ifdef USE_SPARC_ASM #include "context.h" #include "math/m_xform.h" #include "tnl/t_context.h" -#include "sparc.h" #ifdef DEBUG #include "math/m_debug.h" @@ -68,7 +69,6 @@ _mesa_##pfx##_transform_points##sz##_3d; -#ifdef USE_SPARC_ASM DECLARE_XFORM_GROUP(sparc, 1) DECLARE_XFORM_GROUP(sparc, 2) DECLARE_XFORM_GROUP(sparc, 3) @@ -101,11 +101,10 @@ extern void _mesa_sparc_normalize_normals(NORM_ARGS); extern void _mesa_sparc_rescale_normals(NORM_ARGS); -#endif + void _mesa_init_all_sparc_transform_asm(void) { -#ifdef USE_SPARC_ASM ASSIGN_XFORM_GROUP(sparc, 1) ASSIGN_XFORM_GROUP(sparc, 2) ASSIGN_XFORM_GROUP(sparc, 3) @@ -143,8 +142,6 @@ _math_test_all_cliptest_functions("sparc"); _math_test_all_normal_transform_functions("sparc"); #endif - -#endif } extern unsigned int _mesa_sparc_glapi_begin; @@ -165,7 +162,7 @@ disp_addr = (unsigned long) &_glapi_Dispatch; while (insn_ptr < end_ptr) { -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) insn_ptr[0] |= (disp_addr >> (32 + 10)); insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10); __glapi_sparc_icache_flush(&insn_ptr[0]); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/sparc/sparc_matrix.h x11r682/xc/extras/Mesa/src/mesa/sparc/sparc_matrix.h --- xc/extras/Mesa/src/mesa/sparc/sparc_matrix.h 2004-06-16 11:19:24.000000000 +0200 +++ xc/extras/Mesa/src/mesa/sparc/sparc_matrix.h 2004-12-15 02:51:03.000000000 +0100 @@ -5,7 +5,7 @@ #ifndef _SPARC_MATRIX_H #define _SPARC_MATRIX_H -#if defined(__sparc_v9__) && !defined(__linux__) +#if (defined(__sparc_v9__) && (!defined(__linux__) || defined(__linux_sparc_64__))) #define LDPTR ldx #define MAT_M 0x00 #define MAT_INV 0x08 diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_alphabuf.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_alphabuf.c --- xc/extras/Mesa/src/mesa/swrast/s_alphabuf.c 2004-06-16 11:19:25.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_alphabuf.c 2004-12-15 02:51:04.000000000 +0100 @@ -178,16 +178,12 @@ switch (swrast->CurrentBufferBit) { case DD_FRONT_LEFT_BIT: return ctx->DrawBuffer->FrontLeftAlpha; - break; case DD_BACK_LEFT_BIT: return ctx->DrawBuffer->BackLeftAlpha; - break; case DD_FRONT_RIGHT_BIT: return ctx->DrawBuffer->FrontRightAlpha; - break; case DD_BACK_RIGHT_BIT: return ctx->DrawBuffer->BackRightAlpha; - break; default: _mesa_problem(ctx, "Bad CurrentBuffer in get_alpha_buffer()"); return (GLchan *) ctx->DrawBuffer->FrontLeftAlpha; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_auxbuffer.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_auxbuffer.c --- xc/extras/Mesa/src/mesa/swrast/s_auxbuffer.c 2004-06-16 11:19:30.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_auxbuffer.c 2004-12-15 02:51:04.000000000 +0100 @@ -93,6 +93,7 @@ _swrast_use_aux_buffer(GLcontext *ctx, GLframebuffer *buffer, GLuint bufferBit) { SWcontext *swrast = SWRAST_CONTEXT(ctx); + (void) buffer; switch (bufferBit) { case DD_AUX0_BIT: diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_buffers.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_buffers.c --- xc/extras/Mesa/src/mesa/swrast/s_buffers.c 2004-06-16 11:19:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_buffers.c 2004-12-15 02:51:04.000000000 +0100 @@ -176,6 +176,7 @@ GLint x, GLint y, GLint width, GLint height ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); + (void) all; (void) x; (void) y; (void) width; (void) height; #ifdef DEBUG { const GLbitfield legalBits = @@ -254,6 +255,7 @@ void _swrast_DrawBuffer( GLcontext *ctx, GLenum mode ) { + (void) mode; _swrast_use_draw_buffer(ctx); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_context.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_context.c --- xc/extras/Mesa/src/mesa/swrast/s_context.c 2004-07-22 08:53:08.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_context.c 2004-12-15 02:51:04.000000000 +0100 @@ -196,19 +196,22 @@ CLAMPED_FLOAT_TO_CHAN(swrast->_FogColor[GCOMP], ctx->Fog.Color[GCOMP]); CLAMPED_FLOAT_TO_CHAN(swrast->_FogColor[BCOMP], ctx->Fog.Color[BCOMP]); - /* determine if fog is needed */ + /* determine if fog is needed, and if so, which fog mode */ swrast->_FogEnabled = GL_FALSE; - if (ctx->Fog.Enabled) { - swrast->_FogEnabled = GL_TRUE; - } - else if (ctx->FragmentProgram._Enabled && - ctx->FragmentProgram.Current->Base.Target == GL_FRAGMENT_PROGRAM_ARB) { - const struct fragment_program *p; - p = (struct fragment_program *) ctx->FragmentProgram.Current; - if (p->FogOption != GL_NONE) { - swrast->_FogEnabled = GL_TRUE; + if (ctx->FragmentProgram._Enabled) { + if (ctx->FragmentProgram.Current->Base.Target==GL_FRAGMENT_PROGRAM_ARB) { + const struct fragment_program *p + = (struct fragment_program *) ctx->FragmentProgram.Current; + if (p->FogOption != GL_NONE) { + swrast->_FogEnabled = GL_TRUE; + swrast->_FogMode = p->FogOption; + } } } + else if (ctx->Fog.Enabled) { + swrast->_FogEnabled = GL_TRUE; + swrast->_FogMode = ctx->Fog.Mode; + } } @@ -403,6 +406,7 @@ static void _swrast_sleep( GLcontext *ctx, GLuint new_state ) { + (void) ctx; (void) new_state; } @@ -479,7 +483,7 @@ if (swrast->NewState & _SWRAST_NEW_TEXTURE_ENV_MODE) _swrast_update_texture_env( ctx ); - if (swrast->NewState & _NEW_FOG) + if (swrast->NewState & (_NEW_FOG | _NEW_PROGRAM)) _swrast_update_fog_state( ctx ); if (swrast->NewState & _NEW_PROGRAM) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_context.h x11r682/xc/extras/Mesa/src/mesa/swrast/s_context.h --- xc/extras/Mesa/src/mesa/swrast/s_context.h 2004-06-16 11:19:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_context.h 2004-12-15 02:51:04.000000000 +0100 @@ -29,6 +29,17 @@ * \author Keith Whitwell */ +/** + * \mainpage swrast module + * + * This module, software rasterization, contains the software fallback + * routines for drawing points, lines, triangles, bitmaps and images. + * All rendering boils down to writing spans (arrays) of pixels with + * particular colors. The span-writing routines must be implemented + * by the device driver. + */ + + #ifndef S_CONTEXT_H #define S_CONTEXT_H @@ -275,6 +286,7 @@ GLboolean _AnyTextureCombine; GLchan _FogColor[3]; GLboolean _FogEnabled; + GLenum _FogMode; /* either GL_FOG_MODE or fragment program's fog mode */ /* Accum buffer temporaries. */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_copypix.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_copypix.c --- xc/extras/Mesa/src/mesa/swrast/s_copypix.c 2004-06-16 11:19:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_copypix.c 2004-12-15 02:51:04.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -175,8 +175,6 @@ return; } - dest = tmpImage; - if (changeBuffer) { /* choose the read buffer */ _swrast_use_read_buffer(ctx); @@ -191,6 +189,7 @@ srcy + row, rgba); chan_span_to_float(width, (CONST GLchan (*)[4]) rgba, (GLfloat (*)[4]) dest); + dest += 4 * width; } if (changeBuffer) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_depth.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_depth.c --- xc/extras/Mesa/src/mesa/swrast/s_depth.c 2004-06-16 11:19:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_depth.c 2004-12-15 02:51:04.000000000 +0100 @@ -1665,13 +1665,33 @@ void _swrast_clear_depth_buffer( GLcontext *ctx ) { + SWcontext *swrast = SWRAST_CONTEXT(ctx); + if (ctx->Visual.depthBits == 0 - || !ctx->DrawBuffer->DepthBuffer || !ctx->Depth.Mask) { /* no depth buffer, or writing to it is disabled */ return; } + if (swrast->Driver.WriteMonoDepthSpan) { + const GLdepth clearValue = (GLdepth)(ctx->Depth.Clear * ctx->DepthMax); + const GLint x = ctx->DrawBuffer->_Xmin; + const GLint y = ctx->DrawBuffer->_Ymin; + const GLint height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin; + const GLint width = ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin; + GLint i; + + for (i = 0; i < height; i++) { + (*swrast->Driver.WriteMonoDepthSpan)( ctx, width, x, y + i, + clearValue, NULL ); + } + + return; + } + + if (!ctx->DrawBuffer->DepthBuffer) + return; + /* The loops in this function have been written so the IRIX 5.3 * C compiler can unroll them. Hopefully other compilers can too! */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_drawpix.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_drawpix.c --- xc/extras/Mesa/src/mesa/swrast/s_drawpix.c 2004-08-13 01:05:03.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_drawpix.c 2004-12-15 02:51:04.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -521,12 +521,12 @@ const GLint spanEnd = (width - skipPixels > MAX_WIDTH) ? MAX_WIDTH : (width - skipPixels); ASSERT(spanEnd <= MAX_WIDTH); - for (row = 0; row < height; row++, span.y++) { + for (row = 0; row < height; row++, spanY++) { const GLvoid *source = _mesa_image_address(unpack, pixels, width, height, GL_COLOR_INDEX, type, 0, row, skipPixels); - _mesa_unpack_index_span(ctx, span.end, GL_UNSIGNED_INT, + _mesa_unpack_index_span(ctx, spanEnd, GL_UNSIGNED_INT, span.array->index, type, source, unpack, ctx->_ImageTransferState); @@ -659,17 +659,17 @@ && ctx->Visual.rgbMode && width <= MAX_WIDTH) { /* Special case: directly write 16-bit depth values */ - GLint row; - span.x = x; - span.y = y; - span.end = width; - for (row = 0; row < height; row++, span.y++) { + GLint row, spanY = y; + for (row = 0; row < height; row++, spanY++) { const GLushort *zSrc = (const GLushort *) _mesa_image_address(unpack, pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); GLint i; for (i = 0; i < width; i++) span.array->z[i] = zSrc[i]; + span.x = x; + span.y = spanY; + span.end = width; _swrast_write_rgba_span(ctx, &span); } } @@ -681,11 +681,8 @@ && width <= MAX_WIDTH) { /* Special case: shift 32-bit values down to ctx->Visual.depthBits */ const GLint shift = 32 - ctx->Visual.depthBits; - GLint row; - span.x = x; - span.y = y; - span.end = width; - for (row = 0; row < height; row++, span.y++) { + GLint row, spanY = y; + for (row = 0; row < height; row++, spanY++) { const GLuint *zSrc = (const GLuint *) _mesa_image_address(unpack, pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); @@ -697,6 +694,9 @@ for (col = 0; col < width; col++) span.array->z[col] = zSrc[col] >> shift; } + span.x = x; + span.y = spanY; + span.end = width; _swrast_write_rgba_span(ctx, &span); } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_fog.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_fog.c --- xc/extras/Mesa/src/mesa/swrast/s_fog.c 2004-06-16 11:19:26.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_fog.c 2004-12-15 02:51:04.000000000 +0100 @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 4.1 + * Version: 6.3 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * 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"), @@ -34,8 +33,6 @@ #include "s_span.h" - - /** * Used to convert current raster distance to a fog factor in [0,1]. */ @@ -99,7 +96,7 @@ /* The span's fog values are fog coordinates, now compute blend factors * and blend the fragment colors with the fog color. */ - switch (ctx->Fog.Mode) { + switch (swrast->_FogMode) { case GL_LINEAR: { const GLfloat fogEnd = ctx->Fog.End; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_fragprog_to_c.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_fragprog_to_c.c --- xc/extras/Mesa/src/mesa/swrast/s_fragprog_to_c.c 2004-06-16 11:19:30.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_fragprog_to_c.c 2004-12-15 02:51:04.000000000 +0100 @@ -297,7 +297,7 @@ case UREG_TYPE_LOCAL_CONST: emit(p, "local_const"); break; case UREG_TYPE_ENV_CONST: emit(p, "env_const"); break; case UREG_TYPE_STATE_CONST: emit(p, "state_param"); break; - case UREG_TYPE_PARAM: emit(p, "param"); break; + case UREG_TYPE_PARAM: emit(p, "local_param"); break; }; emit(p, "[%d]", GET_UREG_NR(arg)); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_lines.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_lines.c --- xc/extras/Mesa/src/mesa/swrast/s_lines.c 2004-06-16 11:19:27.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_lines.c 2004-12-15 02:51:04.000000000 +0100 @@ -258,7 +258,7 @@ else if (swrast->Line == multitextured_line) _mesa_printf("multitextured_line\n"); else - _mesa_printf("Driver func %p\n", (void *) swrast->Line); + _mesa_printf("Driver func %p\n", (void (*)()) swrast->Line); } #endif diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_linetemp.h x11r682/xc/extras/Mesa/src/mesa/swrast/s_linetemp.h --- xc/extras/Mesa/src/mesa/swrast/s_linetemp.h 2004-06-16 11:19:27.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_linetemp.h 2004-12-15 02:51:04.000000000 +0100 @@ -425,6 +425,8 @@ RENDER_SPAN( span ); #endif + (void)span; + } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_pointtemp.h x11r682/xc/extras/Mesa/src/mesa/swrast/s_pointtemp.h --- xc/extras/Mesa/src/mesa/swrast/s_pointtemp.h 2004-06-16 11:19:28.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_pointtemp.h 2004-12-15 02:51:04.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -220,6 +220,21 @@ count = span->end; (void) radius; for (y = ymin; y <= ymax; y++) { + /* check if we need to flush */ + if (count + (xmax-xmin+1) >= MAX_WIDTH) { + span->end = count; +#if FLAGS & (TEXTURE | SPRITE) + if (ctx->Texture._EnabledUnits) + _swrast_write_texture_span(ctx, span); + else + _swrast_write_rgba_span(ctx, span); +#elif FLAGS & RGBA + _swrast_write_rgba_span(ctx, span); +#else + _swrast_write_index_span(ctx, span); +#endif + count = span->end = 0; + } for (x = xmin; x <= xmax; x++) { #if FLAGS & (SPRITE | TEXTURE) GLuint u; @@ -292,7 +307,11 @@ if (ctx->Texture.Unit[u]._ReallyEnabled) { if (ctx->Point.CoordReplace[u]) { GLfloat s = 0.5F + (x + 0.5F - vert->win[0]) / size; - GLfloat t = 0.5F - (y + 0.5F - vert->win[1]) / size; + GLfloat t; + if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) + t = 0.5F + (y + 0.5F - vert->win[1]) / size; + else /* GL_UPPER_LEFT */ + t = 0.5F - (y + 0.5F - vert->win[1]) / size; span->array->texcoords[u][count][0] = s; span->array->texcoords[u][count][1] = t; span->array->texcoords[u][count][3] = 1.0F; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_readpix.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_readpix.c --- xc/extras/Mesa/src/mesa/swrast/s_readpix.c 2004-06-16 11:19:28.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_readpix.c 2004-12-15 02:51:04.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.2.1 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -86,7 +86,7 @@ GL_COLOR_INDEX, type, 0, i, 0); _mesa_pack_index_span(ctx, readWidth, type, dest, index, - &ctx->Pack, ctx->_ImageTransferState); + packing, ctx->_ImageTransferState); } _swrast_use_draw_buffer(ctx); @@ -163,7 +163,7 @@ GL_DEPTH_COMPONENT, type, 0, j, 0); _mesa_pack_depth_span(ctx, readWidth, (GLdepth *) dest, type, - depth, &ctx->Pack); + depth, packing); } } } @@ -209,7 +209,7 @@ dest = _mesa_image_address(packing, pixels, width, height, GL_STENCIL_INDEX, type, 0, j, 0); - _mesa_pack_stencil_span(ctx, readWidth, type, dest, stencil, &ctx->Pack); + _mesa_pack_stencil_span(ctx, readWidth, type, dest, stencil, packing); } } @@ -498,16 +498,15 @@ _swrast_ReadPixels( GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, - const struct gl_pixelstore_attrib *pack, + const struct gl_pixelstore_attrib *packing, GLvoid *pixels ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); - (void) pack; if (swrast->NewState) _swrast_validate_derived( ctx ); - pixels = _swrast_validate_pbo_access(pack, width, height, 1, + pixels = _swrast_validate_pbo_access(packing, width, height, 1, format, type, (GLvoid *) pixels); if (!pixels) { @@ -519,13 +518,13 @@ switch (format) { case GL_COLOR_INDEX: - read_index_pixels(ctx, x, y, width, height, type, pixels, &ctx->Pack); + read_index_pixels(ctx, x, y, width, height, type, pixels, packing); break; case GL_STENCIL_INDEX: - read_stencil_pixels(ctx, x,y, width,height, type, pixels, &ctx->Pack); + read_stencil_pixels(ctx, x,y, width,height, type, pixels, packing); break; case GL_DEPTH_COMPONENT: - read_depth_pixels(ctx, x, y, width, height, type, pixels, &ctx->Pack); + read_depth_pixels(ctx, x, y, width, height, type, pixels, packing); break; case GL_RED: case GL_GREEN: @@ -539,7 +538,7 @@ case GL_BGRA: case GL_ABGR_EXT: read_rgba_pixels(ctx, x, y, width, height, - format, type, pixels, &ctx->Pack); + format, type, pixels, packing); break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glReadPixels(format)" ); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_span.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_span.c --- xc/extras/Mesa/src/mesa/swrast/s_span.c 2004-07-22 08:53:10.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_span.c 2004-12-15 02:51:04.000000000 +0100 @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -151,6 +151,7 @@ const GLuint n = span->end; GLchan (*rgba)[4] = span->array->rgba; GLuint i; + (void) ctx; ASSERT((span->interpMask & SPAN_RGBA) && !(span->arrayMask & SPAN_RGBA)); @@ -211,6 +212,7 @@ const GLuint n = span->end; GLuint *indexes = span->array->index; GLuint i; + (void) ctx; ASSERT((span->interpMask & SPAN_INDEX) && !(span->arrayMask & SPAN_INDEX)); @@ -236,6 +238,7 @@ static void interpolate_specular(GLcontext *ctx, struct sw_span *span) { + (void) ctx; if (span->interpMask & SPAN_FLAT) { /* constant color */ const GLchan r = FixedToChan(span->specRed); @@ -1470,15 +1473,17 @@ ASSERT(span->arrayMask & SPAN_RGBA); - /* Add base and specular colors */ - if (ctx->Fog.ColorSumEnabled || - (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) { - if (span->interpMask & SPAN_SPEC) { - interpolate_specular(ctx, span); + if (!ctx->FragmentProgram._Enabled) { + /* Add base and specular colors */ + if (ctx->Fog.ColorSumEnabled || + (ctx->Light.Enabled && + ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) { + if (span->interpMask & SPAN_SPEC) { + interpolate_specular(ctx, span); + } + ASSERT(span->arrayMask & SPAN_SPEC); + add_colors( span->end, span->array->rgba, span->array->spec ); } - ASSERT(span->arrayMask & SPAN_SPEC); - add_colors( span->end, span->array->rgba, span->array->spec ); } /* Fog */ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_spantemp.h x11r682/xc/extras/Mesa/src/mesa/swrast/s_spantemp.h --- xc/extras/Mesa/src/mesa/swrast/s_spantemp.h 2004-06-16 11:19:28.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_spantemp.h 2004-12-15 02:51:04.000000000 +0100 @@ -47,6 +47,7 @@ * FETCH_CI_PIXEL(CI, P) to fetch a pixel index from pixel P */ +#include "macros.h" #ifdef STORE_RGBA_PIXEL diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_tcc.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_tcc.c --- xc/extras/Mesa/src/mesa/swrast/s_tcc.c 2004-06-16 11:19:30.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_tcc.c 2004-12-15 02:51:04.000000000 +0100 @@ -179,6 +179,10 @@ struct fp_machine *machine, const struct sw_span *span, GLuint column ) { + (void) ctx; + (void) program; (void) maxInst; + (void) machine; (void) span; + (void) column; return 0; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_texture.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_texture.c --- xc/extras/Mesa/src/mesa/swrast/s_texture.c 2004-06-16 11:19:29.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_texture.c 2004-12-15 02:51:04.000000000 +0100 @@ -456,6 +456,7 @@ { const GLint width = img->Width2; /* without border, power of two */ GLint i; + (void) ctx; COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i); @@ -486,6 +487,7 @@ GLint i0, i1; GLfloat u; GLuint useBorderColor; + (void) ctx; COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1); @@ -657,6 +659,7 @@ { GLuint i; struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iImage[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iWidth2; /* without border, power of two */ const GLint height = img->Height2; /* without border, power of two */ GLint i, j; + (void) ctx; COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i); COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoord[1], height, j); @@ -809,6 +814,7 @@ GLint i0, j0, i1, j1; GLuint useBorderColor; GLfloat u, v; + (void) ctx; COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1); COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoord[1], v, height, j0, j1); @@ -917,7 +923,9 @@ const GLint height = img->Height2; GLint i0, j0, i1, j1; GLfloat u, v; - + (void) ctx; + (void) tObj; + ASSERT(tObj->WrapS == GL_REPEAT); ASSERT(tObj->WrapT == GL_REPEAT); ASSERT(img->Border == 0); @@ -1117,6 +1125,7 @@ { GLuint i; struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iImage[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iHeight - 1; const GLint shift = img->WidthLog2; GLuint k; + (void) ctx; + (void) texUnit; (void) lambda; ASSERT(tObj->WrapS==GL_REPEAT); ASSERT(tObj->WrapT==GL_REPEAT); @@ -1201,6 +1213,8 @@ const GLint rowMask = img->Height - 1; const GLint shift = img->WidthLog2; GLuint i; + (void) ctx; + (void) texUnit; (void) lambda; ASSERT(tObj->WrapS==GL_REPEAT); ASSERT(tObj->WrapT==GL_REPEAT); @@ -1366,6 +1380,7 @@ const GLint height = img->Height2; /* without border, power of two */ const GLint depth = img->Depth2; /* without border, power of two */ GLint i, j, k; + (void) ctx; COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapS, texcoord[0], width, i); COMPUTE_NEAREST_TEXEL_LOCATION(tObj->WrapT, texcoord[1], height, j); @@ -1400,6 +1415,7 @@ GLint i0, j0, k0, i1, j1, k1; GLuint useBorderColor; GLfloat u, v, w; + (void) ctx; COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapS, texcoord[0], u, width, i0, i1); COMPUTE_LINEAR_TEXEL_LOCATIONS(tObj->WrapT, texcoord[1], v, height, j0, j1); @@ -1651,6 +1667,7 @@ { GLuint i; struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iImage[0][tObj->BaseLevel]; + (void) texUnit; (void) lambda; for (i=0;iHeight - 1; GLuint i; + (void) ctx; (void) texUnit; (void) lambda; @@ -2108,6 +2133,7 @@ const GLint height_minus_1 = img->Height - 1; GLuint i; + (void) ctx; (void) texUnit; (void) lambda; @@ -2129,56 +2155,47 @@ /* NOTE: we DO NOT use [0, 1] texture coordinates! */ if (tObj->WrapS == GL_CLAMP) { - /* clamping to width-1 looks wrong, but it's really correct */ - fcol = CLAMP(texcoords[i][0], 0.0F, width_minus_1); + /* Not exactly what the spec says, but it matches NVIDIA output */ + fcol = CLAMP(texcoords[i][0] - 0.5F, 0.0, width_minus_1); i0 = IFLOOR(fcol); i1 = i0 + 1; } else if (tObj->WrapS == GL_CLAMP_TO_EDGE) { fcol = CLAMP(texcoords[i][0], 0.5F, width - 0.5F); + fcol -= 0.5F; i0 = IFLOOR(fcol); i1 = i0 + 1; if (i1 > width_minus_1) i1 = width_minus_1; } - else { /* GL_CLAMP_TO_BORDER */ -#if 0 - /* literal reading of GL_NV_texture_rectangle spec */ + else { + ASSERT(tObj->WrapS == GL_CLAMP_TO_BORDER); fcol = CLAMP(texcoords[i][0], -0.5F, width + 0.5F); + fcol -= 0.5F; i0 = IFLOOR(fcol); i1 = i0 + 1; -#else - /* Note: this produces results that matches NVIDIA, but it's not - * exactly what the GL_NV_texture_rectangle specifies! - */ - fcol = texcoords[i][0]; - i0 = IFLOOR(fcol); - i1 = i0 + 1; -#endif - } + if (tObj->WrapT == GL_CLAMP) { - frow = CLAMP(texcoords[i][1], 0.0F, height_minus_1); + /* Not exactly what the spec says, but it matches NVIDIA output */ + frow = CLAMP(texcoords[i][1] - 0.5F, 0.0, width_minus_1); j0 = IFLOOR(frow); j1 = j0 + 1; } else if (tObj->WrapT == GL_CLAMP_TO_EDGE) { frow = CLAMP(texcoords[i][1], 0.5F, height - 0.5F); + frow -= 0.5F; j0 = IFLOOR(frow); j1 = j0 + 1; if (j1 > height_minus_1) j1 = height_minus_1; } - else { /* GL_CLAMP_TO_BORDER */ -#if 0 + else { + ASSERT(tObj->WrapT == GL_CLAMP_TO_BORDER); frow = CLAMP(texcoords[i][1], -0.5F, height + 0.5F); + frow -= 0.5F; j0 = IFLOOR(frow); j1 = j0 + 1; -#else - frow = texcoords[i][1]; - j0 = IFLOOR(frow); - j1 = j0 + 1; -#endif } /* compute integer rows/columns */ @@ -2284,6 +2301,7 @@ GLenum function; GLchan result; + (void) lambda; (void) unit; ASSERT(tObj->Image[0][tObj->BaseLevel]->Format == GL_DEPTH_COMPONENT); @@ -2709,7 +2727,6 @@ ASSERT(t->MinFilter == GL_NEAREST); return &sample_nearest_1d; } - break; case GL_TEXTURE_2D: if (format == GL_DEPTH_COMPONENT) { return &sample_depth_texture; @@ -2741,7 +2758,6 @@ return &sample_nearest_2d; } } - break; case GL_TEXTURE_3D: if (needLambda) { return &sample_lambda_3d; @@ -2753,7 +2769,6 @@ ASSERT(t->MinFilter == GL_NEAREST); return &sample_nearest_3d; } - break; case GL_TEXTURE_CUBE_MAP: if (needLambda) { return &sample_lambda_cube; @@ -2765,7 +2780,6 @@ ASSERT(t->MinFilter == GL_NEAREST); return &sample_nearest_cube; } - break; case GL_TEXTURE_RECTANGLE_NV: if (needLambda) { return &sample_lambda_rect; @@ -2777,7 +2791,6 @@ ASSERT(t->MinFilter == GL_NEAREST); return &sample_nearest_rect; } - break; default: _mesa_problem(ctx, "invalid target in _swrast_choose_texture_sample_func"); @@ -3494,6 +3507,7 @@ GLuint i; GLint Rc, Gc, Bc, Ac; GLenum format; + (void) primary_rgba; ASSERT(texUnit); ASSERT(texUnit->_Current); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/s_triangle.c x11r682/xc/extras/Mesa/src/mesa/swrast/s_triangle.c --- xc/extras/Mesa/src/mesa/swrast/s_triangle.c 2004-07-22 08:53:11.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/s_triangle.c 2004-12-15 02:51:04.000000000 +0100 @@ -927,7 +927,7 @@ const GLuint *zRow = (const GLuint *) \ _swrast_zbuffer_address(ctx, span.x, span.y); \ for (i = 0; i < span.end; i++) { \ - if (span.z < zRow[i]) { \ + if ((GLuint)span.z < zRow[i]) { \ ctx->OcclusionResult = GL_TRUE; \ ctx->Occlusion.PassedCounter++; \ } \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/swrast/swrast.h x11r682/xc/extras/Mesa/src/mesa/swrast/swrast.h --- xc/extras/Mesa/src/mesa/swrast/swrast.h 2004-06-16 11:19:30.000000000 +0200 +++ xc/extras/Mesa/src/mesa/swrast/swrast.h 2004-12-15 02:51:04.000000000 +0100 @@ -403,6 +403,13 @@ * depth[i] value if mask[i] is nonzero. */ + void (*WriteMonoDepthSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, + const GLdepth depth, const GLubyte mask[] ); + /* Write a horizontal run of depth values. + * If mask is NULL, draw all pixels. + * If mask is not null, only draw pixel [i] when mask [i] is true. + */ + void (*ReadDepthSpan)( GLcontext *ctx, GLuint n, GLint x, GLint y, GLdepth depth[] ); /* Read a horizontal span of values from the depth buffer. diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/descrip.mms x11r682/xc/extras/Mesa/src/mesa/tnl/descrip.mms --- xc/extras/Mesa/src/mesa/tnl/descrip.mms 2004-08-28 06:28:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/descrip.mms 2004-12-15 02:51:04.000000000 +0100 @@ -2,12 +2,12 @@ # contributed by Jouk Jansen joukj@hrem.stm.tudelft.nl # Last revision : 18 August 2004 -first +.first define gl [---.include.gl] define math [-.math] define array_cache [-.array_cache] -include [---]mms-config. +.include [---]mms-config. ##### MACROS ##### diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_array_api.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_array_api.c --- xc/extras/Mesa/src/mesa/tnl/t_array_api.c 2004-06-16 11:19:31.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_array_api.c 2004-12-15 02:51:04.000000000 +0100 @@ -438,4 +438,5 @@ */ void _tnl_array_destroy( GLcontext *ctx ) { + (void) ctx; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_array_import.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_array_import.c --- xc/extras/Mesa/src/mesa/tnl/t_array_import.c 2004-06-16 11:19:31.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_array_import.c 2004-12-15 02:51:04.000000000 +0100 @@ -201,6 +201,7 @@ struct gl_client_array *tmp; GLboolean is_writeable = 0; const GLubyte *data; + (void) writeable; (void) stride; tmp = _ac_import_edgeflag(ctx, GL_UNSIGNED_BYTE, sizeof(GLubyte), diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_context.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_context.c --- xc/extras/Mesa/src/mesa/tnl/t_context.c 2004-06-16 11:19:31.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_context.c 2004-12-15 02:51:04.000000000 +0100 @@ -51,6 +51,7 @@ GLframebuffer *drawBuffer, GLframebuffer *readBuffer ) { + (void) ctx; (void) drawBuffer; (void) readBuffer; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_save_api.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_save_api.c --- xc/extras/Mesa/src/mesa/tnl/t_save_api.c 2004-06-16 11:19:31.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_save_api.c 2004-12-15 02:51:04.000000000 +0100 @@ -179,6 +179,7 @@ static struct tnl_vertex_store *alloc_vertex_store( GLcontext *ctx ) { struct tnl_vertex_store *store = MALLOC_STRUCT(tnl_vertex_store); + (void) ctx; store->used = 0; store->refcount = 1; return store; @@ -187,6 +188,7 @@ static struct tnl_primitive_store *alloc_prim_store( GLcontext *ctx ) { struct tnl_primitive_store *store = MALLOC_STRUCT(tnl_primitive_store); + (void) ctx; store->used = 0; store->refcount = 1; return store; @@ -1241,6 +1243,7 @@ const GLvoid *indices) { GET_CURRENT_CONTEXT(ctx); + (void) mode; (void) count; (void) type; (void) indices; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glDrawElements" ); } @@ -1251,24 +1254,28 @@ const GLvoid *indices) { GET_CURRENT_CONTEXT(ctx); + (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glDrawRangeElements" ); } static void GLAPIENTRY _save_DrawArrays(GLenum mode, GLint start, GLsizei count) { GET_CURRENT_CONTEXT(ctx); + (void) mode; (void) start; (void) count; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glDrawArrays" ); } static void GLAPIENTRY _save_Rectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) { GET_CURRENT_CONTEXT(ctx); + (void) x1; (void) y1; (void) x2; (void) y2; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glRectf" ); } static void GLAPIENTRY _save_EvalMesh1( GLenum mode, GLint i1, GLint i2 ) { GET_CURRENT_CONTEXT(ctx); + (void) mode; (void) i1; (void) i2; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glEvalMesh1" ); } @@ -1276,12 +1283,14 @@ GLint j1, GLint j2 ) { GET_CURRENT_CONTEXT(ctx); + (void) mode; (void) i1; (void) i2; (void) j1; (void) j2; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "glEvalMesh2" ); } static void GLAPIENTRY _save_Begin( GLenum mode ) { GET_CURRENT_CONTEXT( ctx ); + (void) mode; _mesa_compile_error( ctx, GL_INVALID_OPERATION, "Recursive glBegin" ); } @@ -1467,6 +1476,8 @@ { TNLcontext *tnl = TNL_CONTEXT(ctx); + (void) list; (void) mode; + if (!tnl->save.prim_store) tnl->save.prim_store = alloc_prim_store( ctx ); @@ -1481,21 +1492,25 @@ void _tnl_EndList( GLcontext *ctx ) { + (void) ctx; assert(TNL_CONTEXT(ctx)->save.vertex_size == 0); } void _tnl_BeginCallList( GLcontext *ctx, GLuint list ) { + (void) ctx; (void) list; } void _tnl_EndCallList( GLcontext *ctx ) { + (void) ctx; } static void _tnl_destroy_vertex_list( GLcontext *ctx, void *data ) { struct tnl_vertex_list *node = (struct tnl_vertex_list *)data; + (void) ctx; if ( --node->vertex_store->refcount == 0 ) FREE( node->vertex_store ); @@ -1512,6 +1527,7 @@ { struct tnl_vertex_list *node = (struct tnl_vertex_list *)data; GLuint i; + (void) ctx; _mesa_debug(0, "TNL-VERTEX-LIST, %u vertices %d primitives, %d vertsize\n", node->count, @@ -1597,4 +1613,5 @@ */ void _tnl_save_destroy( GLcontext *ctx ) { + (void) ctx; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_save_loopback.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_save_loopback.c --- xc/extras/Mesa/src/mesa/tnl/t_save_loopback.c 2004-06-16 11:19:32.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_save_loopback.c 2004-12-15 02:51:04.000000000 +0100 @@ -164,11 +164,13 @@ static void index_attr1fv(GLcontext *ctx, GLint target, const GLfloat *v) { + (void) target; ctx->Exec->Indexf(v[0]); } static void edgeflag_attr1fv(GLcontext *ctx, GLint target, const GLfloat *v) { + (void) target; ctx->Exec->EdgeFlag((GLboolean)(v[0] == 1.0)); } @@ -194,7 +196,7 @@ GLuint k; if (prim->mode & PRIM_BEGIN) { - glBegin( prim->mode & PRIM_MODE_MASK ); + GL_CALL(Begin)( prim->mode & PRIM_MODE_MASK ); } else { assert(i == 0); @@ -219,7 +221,7 @@ } if (prim->mode & PRIM_END) { - glEnd(); + GL_CALL(End)(); } else { assert (i == list->prim_count-1); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vb_lighttmp.h x11r682/xc/extras/Mesa/src/mesa/tnl/t_vb_lighttmp.h --- xc/extras/Mesa/src/mesa/tnl/t_vb_lighttmp.h 2004-06-16 11:19:32.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vb_lighttmp.h 2004-12-15 02:51:04.000000000 +0100 @@ -253,8 +253,9 @@ const GLfloat *normal = (GLfloat *)VB->NormalPtr->data; GLfloat (*Fcolor)[4] = (GLfloat (*)[4]) store->LitColor[0].data; +#if IDX & LIGHT_TWOSIDE GLfloat (*Bcolor)[4] = (GLfloat (*)[4]) store->LitColor[1].data; - GLfloat (*color[2])[4]; +#endif const GLuint nr = VB->Count; @@ -265,9 +266,6 @@ (void) nstride; (void) vstride; - color[0] = Fcolor; - color[1] = Bcolor; - VB->ColorPtr[0] = &store->LitColor[0]; sumA[0] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3]; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vb_render.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vb_render.c --- xc/extras/Mesa/src/mesa/tnl/t_vb_render.c 2004-07-22 08:53:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vb_render.c 2004-12-15 02:51:04.000000000 +0100 @@ -353,6 +353,7 @@ static void dtr( struct tnl_pipeline_stage *stage ) { + (void) stage; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vertex.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vertex.c --- xc/extras/Mesa/src/mesa/tnl/t_vertex.c 2004-07-22 08:53:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vertex.c 2004-12-15 02:51:04.000000000 +0100 @@ -160,6 +160,7 @@ static void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -170,6 +171,7 @@ static void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -180,6 +182,7 @@ static void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -190,6 +193,7 @@ static void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = 0; @@ -200,6 +204,7 @@ static void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -208,12 +213,14 @@ static void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; (void) v; (void) in; abort(); } static void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -223,6 +230,7 @@ static void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -232,6 +240,7 @@ static void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = 0; @@ -242,6 +251,7 @@ static void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -250,6 +260,7 @@ static void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); + (void) a; out[0] = in[0]; out[1] = 0; @@ -258,7 +269,8 @@ static void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); - + (void) a; + out[0] = in[0]; } @@ -266,6 +278,7 @@ const GLfloat *in ) { GLchan *c = (GLchan *)v; + (void) a; UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); @@ -276,6 +289,7 @@ const GLfloat *in ) { GLchan *c = (GLchan *)v; + (void) a; UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); @@ -286,6 +300,7 @@ const GLfloat *in ) { GLchan *c = (GLchan *)v; + (void) a; UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); c[2] = 0; @@ -296,6 +311,7 @@ const GLfloat *in ) { GLchan *c = (GLchan *)v; + (void) a; UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); c[1] = 0; c[2] = 0; @@ -305,6 +321,7 @@ static void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); @@ -314,6 +331,7 @@ static void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); @@ -323,6 +341,7 @@ static void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); v[2] = 0; @@ -332,6 +351,7 @@ static void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); v[1] = 0; v[2] = 0; @@ -341,6 +361,7 @@ static void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); @@ -350,6 +371,7 @@ static void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); @@ -359,6 +381,7 @@ static void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); v[0] = 0; @@ -368,15 +391,97 @@ static void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); v[1] = 0; v[0] = 0; v[3] = 0xff; } +static void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); + UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); +} + +static void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); + v[0] = 0xff; +} + +static void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + v[3] = 0x00; + v[0] = 0xff; +} + +static void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); + v[2] = 0x00; + v[3] = 0x00; + v[0] = 0xff; +} + +static void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); + UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); +} + +static void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); + v[0] = 0xff; +} + +static void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); + UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); + v[1] = 0x00; + v[0] = 0xff; +} + +static void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, + const GLfloat *in ) +{ + (void) a; + UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); + v[2] = 0x00; + v[1] = 0x00; + v[0] = 0xff; +} + static void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); @@ -385,6 +490,7 @@ static void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); v[2] = 0; @@ -393,6 +499,7 @@ static void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); v[1] = 0; v[2] = 0; @@ -401,6 +508,7 @@ static void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); @@ -409,6 +517,7 @@ static void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); v[0] = 0; @@ -417,6 +526,7 @@ static void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); v[1] = 0; v[0] = 0; @@ -426,6 +536,7 @@ static void insert_1ub_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { + (void) a; UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); } @@ -481,6 +592,7 @@ static void extract_4f( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { const GLfloat *in = (const GLfloat *)v; + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -491,6 +603,7 @@ static void extract_3f_xyw( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { const GLfloat *in = (const GLfloat *)v; + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -502,6 +615,7 @@ static void extract_3f( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { const GLfloat *in = (const GLfloat *)v; + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -513,6 +627,7 @@ static void extract_2f( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { const GLfloat *in = (const GLfloat *)v; + (void) a; out[0] = in[0]; out[1] = in[1]; @@ -523,6 +638,7 @@ static void extract_1f( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { const GLfloat *in = (const GLfloat *)v; + (void) a; out[0] = in[0]; out[1] = 0; @@ -534,6 +650,7 @@ const GLubyte *v ) { GLchan *c = (GLchan *)v; + (void) a; out[0] = CHAN_TO_FLOAT(c[0]); out[1] = CHAN_TO_FLOAT(c[1]); @@ -544,6 +661,7 @@ static void extract_4ub_4f_rgba( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { + (void) a; out[0] = UBYTE_TO_FLOAT(v[0]); out[1] = UBYTE_TO_FLOAT(v[1]); out[2] = UBYTE_TO_FLOAT(v[2]); @@ -553,15 +671,37 @@ static void extract_4ub_4f_bgra( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { + (void) a; out[2] = UBYTE_TO_FLOAT(v[0]); out[1] = UBYTE_TO_FLOAT(v[1]); out[0] = UBYTE_TO_FLOAT(v[2]); out[3] = UBYTE_TO_FLOAT(v[3]); } +static void extract_4ub_4f_argb( const struct tnl_clipspace_attr *a, GLfloat *out, + const GLubyte *v ) +{ + (void) a; + out[3] = UBYTE_TO_FLOAT(v[0]); + out[0] = UBYTE_TO_FLOAT(v[1]); + out[1] = UBYTE_TO_FLOAT(v[2]); + out[2] = UBYTE_TO_FLOAT(v[3]); +} + +static void extract_4ub_4f_abgr( const struct tnl_clipspace_attr *a, GLfloat *out, + const GLubyte *v ) +{ + (void) a; + out[3] = UBYTE_TO_FLOAT(v[0]); + out[2] = UBYTE_TO_FLOAT(v[1]); + out[1] = UBYTE_TO_FLOAT(v[2]); + out[0] = UBYTE_TO_FLOAT(v[3]); +} + static void extract_3ub_3f_rgb( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { + (void) a; out[0] = UBYTE_TO_FLOAT(v[0]); out[1] = UBYTE_TO_FLOAT(v[1]); out[2] = UBYTE_TO_FLOAT(v[2]); @@ -571,6 +711,7 @@ static void extract_3ub_3f_bgr( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { + (void) a; out[2] = UBYTE_TO_FLOAT(v[0]); out[1] = UBYTE_TO_FLOAT(v[1]); out[0] = UBYTE_TO_FLOAT(v[2]); @@ -579,6 +720,7 @@ static void extract_1ub_1f( const struct tnl_clipspace_attr *a, GLfloat *out, const GLubyte *v ) { + (void) a; out[0] = UBYTE_TO_FLOAT(v[0]); out[1] = 0; out[2] = 0; @@ -666,6 +808,18 @@ insert_4ub_4f_bgra_4 }, 4 * sizeof(GLubyte) }, + { "4ub_4f_argb", + extract_4ub_4f_argb, + { insert_4ub_4f_argb_1, insert_4ub_4f_argb_2, insert_4ub_4f_argb_3, + insert_4ub_4f_argb_4 }, + 4 * sizeof(GLubyte) }, + + { "4ub_4f_abgr", + extract_4ub_4f_abgr, + { insert_4ub_4f_abgr_1, insert_4ub_4f_abgr_2, insert_4ub_4f_abgr_3, + insert_4ub_4f_abgr_4 }, + 4 * sizeof(GLubyte) }, + { "4chan_4f_rgba", extract_4chan_4f_rgba, { insert_4chan_4f_rgba_1, insert_4chan_4f_rgba_2, insert_4chan_4f_rgba_3, @@ -731,6 +885,7 @@ const struct tnl_clipspace_attr *a = vtx->attr; const GLuint attr_count = vtx->attr_count; GLuint j; + (void) force_boundary; if (tnl->NeedNdcCoords) { const GLfloat *dstclip = VB->ClipPtr->data[edst]; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vertex.h x11r682/xc/extras/Mesa/src/mesa/tnl/t_vertex.h --- xc/extras/Mesa/src/mesa/tnl/t_vertex.h 2004-07-22 08:53:15.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vertex.h 2004-12-15 02:51:04.000000000 +0100 @@ -53,6 +53,8 @@ EMIT_3UB_3F_BGR, /* for specular color */ EMIT_4UB_4F_RGBA, /* for color */ EMIT_4UB_4F_BGRA, /* for color */ + EMIT_4UB_4F_ARGB, /* for color */ + EMIT_4UB_4F_ABGR, /* for color */ EMIT_4CHAN_4F_RGBA, /* for swrast color */ EMIT_PAD, /* leave a hole of 'offset' bytes */ EMIT_MAX diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vertex_c.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vertex_c.c --- xc/extras/Mesa/src/mesa/tnl/t_vertex_c.c 2004-08-28 07:35:25.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vertex_c.c 2004-12-15 02:51:04.000000000 +0100 @@ -228,25 +228,12 @@ static GLboolean print_attr_footer( struct tnl_clipspace_codegen *p ) { - return - emit(p, " }\n"); + return emit(p, " }\n"); } static tnl_emit_func print_store_func( struct tnl_clipspace_codegen *p ) { -#if defined( WIN32 ) || defined( __VMS ) - fprintf(stderr, "%s: emitted:\n%s\n", "print_store_func", p->buf); -#else -/* C99 provides __func__, older gcc versions called it __FUNCTION__ */ -#if __STDC_VERSION__ < 199901L -# if __GNUC__ >= 2 -# define __func__ __FUNCTION__ -# else -# define __func__ "print_store_func" -# endif -#endif - fprintf(stderr, "%s: emitted:\n%s\n", __func__, p->buf); -#endif + fprintf(stderr, "print_store_func: emitted:\n%s\n", p->buf); return 0; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vertex_codegen.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vertex_codegen.c --- xc/extras/Mesa/src/mesa/tnl/t_vertex_codegen.c 2004-07-22 08:53:16.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vertex_codegen.c 2004-12-15 02:51:04.000000000 +0100 @@ -161,6 +161,7 @@ static GLboolean emit_3f_xyw_err( struct tnl_clipspace_codegen *p ) { + (void) p; assert(0); return GL_FALSE; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vtx_api.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vtx_api.c --- xc/extras/Mesa/src/mesa/tnl/t_vtx_api.c 2004-07-22 08:53:16.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vtx_api.c 2004-12-15 02:51:04.000000000 +0100 @@ -345,6 +345,7 @@ ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; } +#ifdef USE_X86_ASM static struct _tnl_dynfn *lookup( struct _tnl_dynfn *l, GLuint key ) { @@ -382,11 +383,13 @@ } if (dfn) - return (tnl_attrfv_func) dfn->code; + return *(tnl_attrfv_func *) &dfn->code; else return 0; } +#endif /* USE_X86_ASM */ + /* Helper function for 'CHOOSE' macro. Do what's necessary when an * entrypoint is called for the first time. */ @@ -824,6 +827,7 @@ void _tnl_FlushVertices( GLcontext *ctx, GLuint flags ) { TNLcontext *tnl = TNL_CONTEXT(ctx); + (void) flags; if (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END) return; @@ -860,6 +864,7 @@ static struct _tnl_dynfn *no_codegen( GLcontext *ctx, int key ) { + (void) ctx; (void) key; return 0; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vtx_eval.c x11r682/xc/extras/Mesa/src/mesa/tnl/t_vtx_eval.c --- xc/extras/Mesa/src/mesa/tnl/t_vtx_eval.c 2004-06-16 11:19:33.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vtx_eval.c 2004-12-15 02:51:04.000000000 +0100 @@ -165,9 +165,9 @@ map->Order); if (tnl->vtx.eval.map1[0].sz == 4) - glVertex4fv( vertex ); + GL_CALL(Vertex4fv)( vertex ); else - glVertex3fv( vertex ); + GL_CALL(Vertex3fv)( vertex ); } } @@ -244,9 +244,9 @@ } if (tnl->vtx.attrsz[0] == 4) - glVertex4fv( vertex ); + GL_CALL(Vertex4fv)( vertex ); else - glVertex3fv( vertex ); + GL_CALL(Vertex3fv)( vertex ); } } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl/t_vtx_x86_gcc.S x11r682/xc/extras/Mesa/src/mesa/tnl/t_vtx_x86_gcc.S --- xc/extras/Mesa/src/mesa/tnl/t_vtx_x86_gcc.S 2004-06-16 11:19:33.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl/t_vtx_x86_gcc.S 2004-12-13 14:43:08.000000000 +0100 @@ -31,15 +31,15 @@ * Daniel Borca */ -#if defined (__DJGPP__) || defined (__MINGW32__) +#if defined (__DJGPP__) || defined (__MINGW32__) || defined (__CYGWIN__) #define GLOBL( x ) \ .globl _##x; \ _##x: -#else /* !defined (__DJGPP__) && !defined (__MINGW32__) */ +#else /* !defined (__DJGPP__) && !defined (__MINGW32__) && !defined (__CYGWIN__) */ #define GLOBL( x ) \ .globl x; \ x: -#endif /* !defined (__DJGPP__) && !defined (__MINGW32__) */ +#endif /* !defined (__DJGPP__) && !defined (__MINGW32__) && !defined (__CYGWIN__) */ #if !defined (STDCALL_API) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/tnl_dd/t_dd_triemit.h x11r682/xc/extras/Mesa/src/mesa/tnl_dd/t_dd_triemit.h --- xc/extras/Mesa/src/mesa/tnl_dd/t_dd_triemit.h 2004-06-16 11:19:34.000000000 +0200 +++ xc/extras/Mesa/src/mesa/tnl_dd/t_dd_triemit.h 2004-12-15 02:51:04.000000000 +0100 @@ -16,6 +16,13 @@ "D" ((long)vb), \ "S" ((long)v) ); \ } while (0) +#elif defined(HAVE_LE32_VERTS) +#define COPY_DWORDS( j, vb, vertsize, v ) \ +do { \ + for ( j = 0 ; j < vertsize ; j++ ) \ + vb[j] = CPU_TO_LE32(((GLuint *)v)[j]); \ + vb += vertsize; \ +} while (0) #else #define COPY_DWORDS( j, vb, vertsize, v ) \ do { \ diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/x86/Makefile x11r682/xc/extras/Mesa/src/mesa/x86/Makefile --- xc/extras/Mesa/src/mesa/x86/Makefile 2004-06-16 11:19:37.000000000 +0200 +++ xc/extras/Mesa/src/mesa/x86/Makefile 2004-12-15 02:51:06.000000000 +0100 @@ -11,6 +11,7 @@ -I$(TOP)/include \ -I.. \ -I../main \ + -I../math \ -I../glapi \ -I../tnl diff -N -x '*CVS*' -r -u x11r680/xc/extras/Mesa/src/mesa/x86/glapi_x86.S x11r682/xc/extras/Mesa/src/mesa/x86/glapi_x86.S --- xc/extras/Mesa/src/mesa/x86/glapi_x86.S 2004-08-28 06:28:19.000000000 +0200 +++ xc/extras/Mesa/src/mesa/x86/glapi_x86.S 2004-12-15 02:51:06.000000000 +0100 @@ -32,11 +32,17 @@ #ifndef __WIN32__ #if defined(STDCALL_API) -#define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2)) -#elif defined(USE_MGL_NAMESPACE) -#define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n)) +# if defined(USE_MGL_NAMESPACE) +# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2)) +# else +# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2)) +# endif #else -#define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n)) +# if defined(USE_MGL_NAMESPACE) +# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n)) +# else +# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n)) +# endif #endif #define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX)) diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/Attrib.c x11r682/xc/extras/Xpm/lib/Attrib.c --- xc/extras/Xpm/lib/Attrib.c 2003-11-14 17:48:24.000000000 +0100 +++ xc/extras/Xpm/lib/Attrib.c 2004-12-17 02:09:36.000000000 +0100 @@ -32,13 +32,15 @@ * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" /* 3.2 backward compatibility code */ -LFUNC(CreateOldColorTable, int, (XpmColor *ct, int ncolors, +LFUNC(CreateOldColorTable, int, (XpmColor *ct, unsigned int ncolors, XpmColor ***oldct)); -LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); +LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, unsigned int ncolors)); /* * Create a colortable compatible with the old style colortable @@ -46,11 +48,14 @@ static int CreateOldColorTable(ct, ncolors, oldct) XpmColor *ct; - int ncolors; + unsigned int ncolors; XpmColor ***oldct; { XpmColor **colorTable, **color; - int a; + unsigned int a; + + if (ncolors >= UINT_MAX / sizeof(XpmColor *)) + return XpmNoMemory; colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *)); if (!colorTable) { @@ -66,9 +71,9 @@ static void FreeOldColorTable(colorTable, ncolors) XpmColor **colorTable; - int ncolors; + unsigned int ncolors; { - int a, b; + unsigned int a, b; XpmColor **color; char **sptr; @@ -119,7 +124,7 @@ XpmExtension *ext; char **sptr; - if (extensions) { + if (extensions && nextensions > 0) { for (i = 0, ext = extensions; i < nextensions; i++, ext++) { if (ext->name) XpmFree(ext->name); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/CrBufFrI.c x11r682/xc/extras/Xpm/lib/CrBufFrI.c --- xc/extras/Xpm/lib/CrBufFrI.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/CrBufFrI.c 2004-12-17 02:09:36.000000000 +0100 @@ -31,6 +31,9 @@ * * * Developed by Arnaud Le Hors * \*****************************************************************************/ + +/* October 2004, source code review by Thomas Biege */ + /* $XFree86$ */ #include "XpmI.h" @@ -39,15 +42,17 @@ unsigned int *used_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); -LFUNC(WritePixels, void, (char *dataptr, unsigned int *used_size, +LFUNC(WritePixels, void, (char *dataptr, unsigned int data_size, + unsigned int *used_size, unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); -LFUNC(WriteExtensions, void, (char *dataptr, unsigned int *used_size, +LFUNC(WriteExtensions, void, (char *dataptr, unsigned int data_size, + unsigned int *used_size, XpmExtension *ext, unsigned int num)); -LFUNC(ExtensionsSize, int, (XpmExtension *ext, unsigned int num)); +LFUNC(ExtensionsSize, unsigned int, (XpmExtension *ext, unsigned int num)); LFUNC(CommentsSize, int, (XpmInfo *info)); int @@ -90,10 +95,11 @@ #undef RETURN #define RETURN(status) \ +do \ { \ ErrorStatus = status; \ goto error; \ -} +}while(0) int XpmCreateBufferFromXpmImage(buffer_return, image, info) @@ -107,7 +113,7 @@ unsigned int cmts, extensions, ext_size = 0; unsigned int l, cmt_size = 0; char *ptr = NULL, *p; - unsigned int ptr_size, used_size; + unsigned int ptr_size, used_size, tmp; *buffer_return = NULL; @@ -129,7 +135,13 @@ #ifdef VOID_SPRINTF used_size = strlen(buf); #endif - ptr_size = used_size + ext_size + cmt_size + 1; + ptr_size = used_size + ext_size + cmt_size + 1; /* ptr_size can't be 0 */ + if(ptr_size <= used_size || + ptr_size <= ext_size || + ptr_size <= cmt_size) + { + return XpmNoMemory; + } ptr = (char *) XpmMalloc(ptr_size); if (!ptr) return XpmNoMemory; @@ -140,7 +152,7 @@ #ifndef VOID_SPRINTF used_size += #endif - sprintf(ptr + used_size, "/*%s*/\n", info->hints_cmt); + snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->hints_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->hints_cmt) + 5; #endif @@ -158,7 +170,7 @@ #ifndef VOID_SPRINTF l += #endif - sprintf(buf + l, " %d %d", info->x_hotspot, info->y_hotspot); + snprintf(buf + l, sizeof(buf)-l, " %d %d", info->x_hotspot, info->y_hotspot); #ifdef VOID_SPRINTF l = strlen(buf); #endif @@ -180,6 +192,8 @@ l = strlen(buf); #endif ptr_size += l; + if(ptr_size <= l) + RETURN(XpmNoMemory); p = (char *) XpmRealloc(ptr, ptr_size); if (!p) RETURN(XpmNoMemory); @@ -192,7 +206,7 @@ #ifndef VOID_SPRINTF used_size += #endif - sprintf(ptr + used_size, "/*%s*/\n", info->colors_cmt); + snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->colors_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->colors_cmt) + 5; #endif @@ -208,7 +222,12 @@ * 4 = 1 (for '"') + 3 (for '",\n') * 1 = - 2 (because the last line does not end with ',\n') + 3 (for '};\n') */ - ptr_size += image->height * (image->width * image->cpp + 4) + 1; + if(image->width > UINT_MAX / image->cpp || + (tmp = image->width * image->cpp + 4) <= 4 || + image->height > UINT_MAX / tmp || + (tmp = image->height * tmp + 1) <= 1 || + (ptr_size += tmp) <= tmp) + RETURN(XpmNoMemory); p = (char *) XpmRealloc(ptr, ptr_size); if (!p) @@ -220,17 +239,17 @@ #ifndef VOID_SPRINTF used_size += #endif - sprintf(ptr + used_size, "/*%s*/\n", info->pixels_cmt); + snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->pixels_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->pixels_cmt) + 5; #endif } - WritePixels(ptr + used_size, &used_size, image->width, image->height, + WritePixels(ptr + used_size, ptr_size - used_size, &used_size, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) - WriteExtensions(ptr + used_size, &used_size, + WriteExtensions(ptr + used_size, ptr_size-used_size, &used_size, info->extensions, info->nextensions); /* close the array */ @@ -247,6 +266,7 @@ return (ErrorStatus); } + static int WriteColors(dataptr, data_size, used_size, colors, ncolors, cpp) char **dataptr; @@ -256,7 +276,7 @@ unsigned int ncolors; unsigned int cpp; { - char buf[BUFSIZ]; + char buf[BUFSIZ] = {0}; unsigned int a, key, l; char *s, *s2; char **defaults; @@ -266,6 +286,8 @@ defaults = (char **) colors; s = buf + 1; + if(cpp > (sizeof(buf) - (s-buf))) + return(XpmNoMemory); strncpy(s, *defaults++, cpp); s += cpp; @@ -274,14 +296,24 @@ #ifndef VOID_SPRINTF s += #endif - sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); + /* assume C99 compliance */ + snprintf(s, sizeof(buf) - (s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif + /* now let's check if s points out-of-bounds */ + if((s-buf) > sizeof(buf)) + return(XpmNoMemory); } } + if(sizeof(buf) - (s-buf) < 4) + return(XpmNoMemory); strcpy(s, "\",\n"); l = s + 3 - buf; + if( *data_size >= UINT_MAX-l || + *data_size + l <= *used_size || + (*data_size + l - *used_size) <= sizeof(buf)) + return(XpmNoMemory); s = (char *) XpmRealloc(*dataptr, *data_size + l); if (!s) return (XpmNoMemory); @@ -294,8 +326,9 @@ } static void -WritePixels(dataptr, used_size, width, height, cpp, pixels, colors) +WritePixels(dataptr, data_size, used_size, width, height, cpp, pixels, colors) char *dataptr; + unsigned int data_size; unsigned int *used_size; unsigned int width; unsigned int height; @@ -306,27 +339,36 @@ char *s = dataptr; unsigned int x, y, h; + if(height <= 1) + return; + h = height - 1; for (y = 0; y < h; y++) { *s++ = '"'; for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); + if(cpp >= (data_size - (s-dataptr))) + return; + strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? :-\ */ s += cpp; } + if((data_size - (s-dataptr)) < 4) + return; strcpy(s, "\",\n"); s += 3; } /* duplicate some code to avoid a test in the loop */ *s++ = '"'; for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); + if(cpp >= (data_size - (s-dataptr))) + return; + strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? */ s += cpp; } *s++ = '"'; *used_size += s - dataptr; } -static int +static unsigned int ExtensionsSize(ext, num) XpmExtension *ext; unsigned int num; @@ -335,21 +377,26 @@ char **line; size = 0; + if(num == 0) + return(0); /* ok? */ for (x = 0; x < num; x++, ext++) { /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */ size += strlen(ext->name) + 11; - a = ext->nlines; + a = ext->nlines; /* how can we trust ext->nlines to be not out-of-bounds? */ for (y = 0, line = ext->lines; y < a; y++, line++) /* 4 = 3 (for ',\n"') + 1 (for '"') */ size += strlen(*line) + 4; } /* 13 is for ',\n"XPMENDEXT"' */ + if(size > UINT_MAX - 13) /* unlikely */ + return(0); return size + 13; } static void -WriteExtensions(dataptr, used_size, ext, num) +WriteExtensions(dataptr, data_size, used_size, ext, num) char *dataptr; + unsigned int data_size; unsigned int *used_size; XpmExtension *ext; unsigned int num; @@ -362,7 +409,7 @@ #ifndef VOID_SPRINTF s += #endif - sprintf(s, ",\n\"XPMEXT %s\"", ext->name); + snprintf(s, data_size - (s-dataptr), ",\n\"XPMEXT %s\"", ext->name); #ifdef VOID_SPRINTF s += strlen(ext->name) + 11; #endif @@ -371,13 +418,13 @@ #ifndef VOID_SPRINTF s += #endif - sprintf(s, ",\n\"%s\"", *line); + snprintf(s, data_size - (s-dataptr), ",\n\"%s\"", *line); #ifdef VOID_SPRINTF s += strlen(*line) + 4; #endif } } - strcpy(s, ",\n\"XPMENDEXT\""); + strncpy(s, ",\n\"XPMENDEXT\"", data_size - (s-dataptr)-1); *used_size += s - dataptr + 13; } @@ -388,6 +435,7 @@ int size = 0; /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */ + /* wrap possible but *very* unlikely */ if (info->hints_cmt) size += 5 + strlen(info->hints_cmt); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/CrDatFrI.c x11r682/xc/extras/Xpm/lib/CrDatFrI.c --- xc/extras/Xpm/lib/CrDatFrI.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/CrDatFrI.c 2004-12-17 02:09:36.000000000 +0100 @@ -33,13 +33,16 @@ \*****************************************************************************/ /* $XFree86$ */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); -LFUNC(CreatePixels, void, (char **dataptr, unsigned int width, +LFUNC(CreatePixels, void, (char **dataptr, unsigned int data_size, + unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); @@ -47,7 +50,8 @@ unsigned int *ext_size, unsigned int *ext_nlines)); -LFUNC(CreateExtensions, void, (char **dataptr, unsigned int offset, +LFUNC(CreateExtensions, void, (char **dataptr, unsigned int data_size, + unsigned int offset, XpmExtension *ext, unsigned int num, unsigned int ext_nlines)); @@ -88,10 +92,11 @@ #undef RETURN #define RETURN(status) \ +do \ { \ ErrorStatus = status; \ goto exit; \ -} +} while(0) int XpmCreateDataFromXpmImage(data_return, image, info) @@ -122,9 +127,17 @@ * alloc a temporary array of char pointer for the header section which * is the hints line + the color table lines */ - header_nlines = 1 + image->ncolors; + header_nlines = 1 + image->ncolors; /* this may wrap and/or become 0 */ + + /* 2nd check superfluous if we do not need header_nlines any further */ + if(header_nlines <= image->ncolors || + header_nlines >= UINT_MAX / sizeof(char *)) + return(XpmNoMemory); + header_size = sizeof(char *) * header_nlines; - header = (char **) XpmCalloc(header_size, sizeof(char *)); + if (header_size >= UINT_MAX / sizeof(char *)) + return (XpmNoMemory); + header = (char **) XpmCalloc(header_size, sizeof(char *)); /* can we trust image->ncolors */ if (!header) return (XpmNoMemory); @@ -168,8 +181,22 @@ /* now we know the size needed, alloc the data and copy the header lines */ offset = image->width * image->cpp + 1; - data_size = header_size + (image->height + ext_nlines) * sizeof(char *) - + image->height * offset + ext_size; + + if(offset <= image->width || offset <= image->cpp) + RETURN(XpmNoMemory); + + if( (image->height + ext_nlines) >= UINT_MAX / sizeof(char *)) + RETURN(XpmNoMemory); + data_size = (image->height + ext_nlines) * sizeof(char *); + + if (image->height > UINT_MAX / offset || + image->height * offset > UINT_MAX - data_size) + RETURN(XpmNoMemory); + data_size += image->height * offset; + + if( (header_size + ext_size) >= (UINT_MAX - data_size) ) + RETURN(XpmNoMemory); + data_size += header_size + ext_size; data = (char **) XpmMalloc(data_size); if (!data) @@ -177,8 +204,10 @@ data_nlines = header_nlines + image->height + ext_nlines; *data = (char *) (data + data_nlines); + + /* can header have less elements then n suggests? */ n = image->ncolors; - for (l = 0, sptr = data, sptr2 = header; l <= n; l++, sptr++, sptr2++) { + for (l = 0, sptr = data, sptr2 = header; l <= n && sptr && sptr2; l++, sptr++, sptr2++) { strcpy(*sptr, *sptr2); *(sptr + 1) = *sptr + strlen(*sptr2) + 1; } @@ -187,12 +216,13 @@ data[header_nlines] = (char *) data + header_size + (image->height + ext_nlines) * sizeof(char *); - CreatePixels(data + header_nlines, image->width, image->height, + CreatePixels(data + header_nlines, data_size-header_nlines, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) - CreateExtensions(data + header_nlines + image->height - 1, offset, + CreateExtensions(data + header_nlines + image->height - 1, + data_size - header_nlines - image->height + 1, offset, info->extensions, info->nextensions, ext_nlines); @@ -223,23 +253,34 @@ char *s, *s2; char **defaults; + /* can ncolors be trusted here? */ for (a = 0; a < ncolors; a++, colors++, dataptr++) { defaults = (char **) colors; + if(sizeof(buf) <= cpp) + return(XpmNoMemory); strncpy(buf, *defaults++, cpp); s = buf + cpp; + if(sizeof(buf) <= (s-buf)) + return XpmNoMemory; + for (key = 1; key <= NKEYS; key++, defaults++) { if ((s2 = *defaults)) { #ifndef VOID_SPRINTF s += #endif - sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); + /* assume C99 compliance */ + snprintf(s, sizeof(buf)-(s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif + /* does s point out-of-bounds? */ + if(sizeof(buf) < (s-buf)) + return XpmNoMemory; } } + /* what about using strdup()? */ l = s - buf + 1; s = (char *) XpmMalloc(l); if (!s) @@ -251,8 +292,9 @@ } static void -CreatePixels(dataptr, width, height, cpp, pixels, colors) +CreatePixels(dataptr, data_size, width, height, cpp, pixels, colors) char **dataptr; + unsigned int data_size; unsigned int width; unsigned int height; unsigned int cpp; @@ -262,21 +304,38 @@ char *s; unsigned int x, y, h, offset; + if(height <= 1) + return; + h = height - 1; + offset = width * cpp + 1; + + if(offset <= width || offset <= cpp) + return; + + /* why trust h? */ for (y = 0; y < h; y++, dataptr++) { s = *dataptr; + /* why trust width? */ for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); + if(cpp > (data_size - (s - *dataptr))) + return; + strncpy(s, colors[*pixels].string, cpp); /* why trust pixel? */ s += cpp; } *s = '\0'; + if(offset > data_size) + return; *(dataptr + 1) = *dataptr + offset; } /* duplicate some code to avoid a test in the loop */ s = *dataptr; + /* why trust width? */ for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); + if(cpp > data_size - (s - *dataptr)) + return; + strncpy(s, colors[*pixels].string, cpp); /* why should we trust *pixel? */ s += cpp; } *s = '\0'; @@ -309,8 +368,9 @@ } static void -CreateExtensions(dataptr, offset, ext, num, ext_nlines) +CreateExtensions(dataptr, data_size, offset, ext, num, ext_nlines) char **dataptr; + unsigned int data_size; unsigned int offset; XpmExtension *ext; unsigned int num; @@ -323,12 +383,12 @@ dataptr++; a = 0; for (x = 0; x < num; x++, ext++) { - sprintf(*dataptr, "XPMEXT %s", ext->name); + snprintf(*dataptr, data_size, "XPMEXT %s", ext->name); a++; if (a < ext_nlines) *(dataptr + 1) = *dataptr + strlen(ext->name) + 8; dataptr++; - b = ext->nlines; + b = ext->nlines; /* can we trust these values? */ for (y = 0, line = ext->lines; y < b; y++, line++) { strcpy(*dataptr, *line); a++; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/RdFToBuf.c x11r682/xc/extras/Xpm/lib/RdFToBuf.c --- xc/extras/Xpm/lib/RdFToBuf.c 2003-11-14 17:48:24.000000000 +0100 +++ xc/extras/Xpm/lib/RdFToBuf.c 2004-12-17 02:09:36.000000000 +0100 @@ -37,6 +37,8 @@ * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include #if !defined(FOR_MSW) && !defined(WIN32) @@ -58,7 +60,8 @@ char *filename; char **buffer_return; { - int fd, fcheck, len; + int fd, fcheck; + off_t len; char *ptr; struct stat stats; FILE *fp; @@ -82,7 +85,7 @@ close(fd); return XpmOpenFailed; } - len = (int) stats.st_size; + len = stats.st_size; ptr = (char *) XpmMalloc(len + 1); if (!ptr) { fclose(fp); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/RdFToI.c x11r682/xc/extras/Xpm/lib/RdFToI.c --- xc/extras/Xpm/lib/RdFToI.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/RdFToI.c 2004-12-17 02:09:36.000000000 +0100 @@ -33,16 +33,14 @@ \*****************************************************************************/ /* $XFree86$ */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" -#include -#if !defined(NO_ZPIPE) && defined(WIN32) -# define popen _popen -# define pclose _pclose -# if defined(STAT_ZFILE) -# include -# define stat _stat -# define fstat _fstat -# endif +#ifndef NO_ZPIPE +#include +#include +#include +#include #endif LFUNC(OpenReadFile, int, (char *filename, xpmData *mdata)); @@ -120,6 +118,67 @@ } #endif /* CXPMPROG */ +#ifndef NO_ZPIPE +/* Do not depend on errno after read_through */ +FILE* +xpmPipeThrough(fd, cmd, arg1, mode) + int fd; + const char* cmd; + const char* arg1; + const char* mode; +{ + FILE* fp; + int status, fds[2], in = 0, out = 1; + pid_t pid; + if ( 'w' == *mode ) + out = 0, in = 1; + if ( pipe(fds) < 0 ) + return NULL; + pid = fork(); + if ( pid < 0 ) + goto fail1; + if ( 0 == pid ) + { + close(fds[in]); + if ( dup2(fds[out], out) < 0 ) + goto err; + close(fds[out]); + if ( dup2(fd, in) < 0 ) + goto err; + close(fd); + pid = fork(); + if ( pid < 0 ) + goto err; + if ( 0 == pid ) + { + execlp(cmd, cmd, arg1, NULL); + perror(cmd); + goto err; + } + _exit(0); + err: + _exit(1); + } + close(fds[out]); + /* calling process: wait for first child */ + while ( waitpid(pid, &status, 0) < 0 && EINTR == errno ) + ; + if ( WIFSIGNALED(status) || + (WIFEXITED(status) && WEXITSTATUS(status) != 0) ) + goto fail2; + fp = fdopen(fds[in], mode); + if ( !fp ) + goto fail2; + close(fd); /* still open in 2nd child */ + return fp; +fail1: + close(fds[out]); +fail2: + close(fds[in]); + return NULL; +} +#endif + /* * open the given file to be read as an xpmData which is returned. */ @@ -128,72 +187,62 @@ char *filename; xpmData *mdata; { -#ifndef NO_ZPIPE - char buf[BUFSIZ]; -# ifdef STAT_ZFILE - char *compressfile; - struct stat status; -# endif -#endif - if (!filename) { mdata->stream.file = (stdin); mdata->type = XPMFILE; } else { -#ifndef NO_ZPIPE - int len = strlen(filename); - if ((len > 2) && !strcmp(".Z", filename + (len - 2))) { - mdata->type = XPMPIPE; - sprintf(buf, "uncompress -c \"%s\"", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else if ((len > 3) && !strcmp(".gz", filename + (len - 3))) { - mdata->type = XPMPIPE; - sprintf(buf, "gunzip -qc \"%s\"", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else { -# ifdef STAT_ZFILE - if (!(compressfile = (char *) XpmMalloc(len + 4))) + int fd = open(filename, O_RDONLY); +#if defined(NO_ZPIPE) + if ( fd < 0 ) + return XpmOpenFailed; +#else + const char* ext = NULL; + if ( fd >= 0 ) + ext = strrchr(filename, '.'); +#ifdef STAT_ZFILE /* searching for z-files if the given name not found */ + else + { + size_t len = strlen(filename); + char *compressfile = (char *) XpmMalloc(len + 4); + if ( !compressfile ) return (XpmNoMemory); - - sprintf(compressfile, "%s.Z", filename); - if (!stat(compressfile, &status)) { - sprintf(buf, "uncompress -c \"%s\"", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { + strcpy(compressfile, filename); + strcpy(compressfile + len, ext = ".Z"); + fd = open(compressfile, O_RDONLY); + if ( fd < 0 ) + { + strcpy(compressfile + len, ext = ".gz"); + fd = open(compressfile, O_RDONLY); + if ( fd < 0 ) + { XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { - sprintf(compressfile, "%s.gz", filename); - if (!stat(compressfile, &status)) { - sprintf(buf, "gunzip -c \"%s\"", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { -# endif -#endif - if (!(mdata->stream.file = fopen(filename, "r"))) { -#if !defined(NO_ZPIPE) && defined(STAT_ZFILE) - XpmFree(compressfile); -#endif - return (XpmOpenFailed); - } - mdata->type = XPMFILE; -#ifndef NO_ZPIPE -# ifdef STAT_ZFILE + return XpmOpenFailed; } } XpmFree(compressfile); -# endif } #endif + if ( ext && !strcmp(ext, ".Z") ) + { + mdata->type = XPMPIPE; + mdata->stream.file = xpmPipeThrough(fd, "uncompress", "-c", "r"); + } + else if ( ext && !strcmp(ext, ".gz") ) + { + mdata->type = XPMPIPE; + mdata->stream.file = xpmPipeThrough(fd, "gunzip", "-qc", "r"); + } + else +#endif /* z-files */ + { + mdata->type = XPMFILE; + mdata->stream.file = fdopen(fd, "r"); + } + if (!mdata->stream.file) + { + close(fd); + return (XpmOpenFailed); + } } mdata->CommentLength = 0; #ifdef CXPMPROG @@ -210,15 +259,6 @@ xpmDataClose(mdata) xpmData *mdata; { - switch (mdata->type) { - case XPMFILE: - if (mdata->stream.file != (stdin)) - fclose(mdata->stream.file); - break; -#ifndef NO_ZPIPE - case XPMPIPE: - pclose(mdata->stream.file); - break; -#endif - } + if (mdata->stream.file != (stdin)) + fclose(mdata->stream.file); } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/WrFFrBuf.c x11r682/xc/extras/Xpm/lib/WrFFrBuf.c --- xc/extras/Xpm/lib/WrFFrBuf.c 2003-11-14 17:48:24.000000000 +0100 +++ xc/extras/Xpm/lib/WrFFrBuf.c 2004-12-17 02:09:36.000000000 +0100 @@ -32,6 +32,8 @@ * Developed by Arnaud Le Hors * \*****************************************************************************/ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" int @@ -49,7 +51,7 @@ fcheck = fwrite(buffer, len, 1, fp); fclose(fp); if (fcheck != 1) - return XpmOpenFailed; + return XpmOpenFailed; /* maybe use a better return value */ return XpmSuccess; } diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/WrFFrI.c x11r682/xc/extras/Xpm/lib/WrFFrI.c --- xc/extras/Xpm/lib/WrFFrI.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/WrFFrI.c 2004-12-17 02:09:36.000000000 +0100 @@ -39,9 +39,13 @@ */ #include "XpmI.h" -#if !defined(NO_ZPIPE) && defined(WIN32) -# define popen _popen -# define pclose _pclose + +#ifndef NO_ZPIPE +#include "sys/wait.h" +#include "sys/types.h" +#include "fcntl.h" +#include "unistd.h" +#include "errno.h" #endif /* MS Windows define a function called WriteFile @#%#&!!! */ @@ -98,7 +102,7 @@ XpmInfo *info; { xpmData mdata; - char *name, *dot, *s, new_name[BUFSIZ]; + char *name, *dot, *s, new_name[BUFSIZ] = {0}; int ErrorStatus; /* open file to write */ @@ -121,7 +125,8 @@ #endif /* let's try to make a valid C syntax name */ if (index(name, '.')) { - strcpy(new_name, name); + strncpy(new_name, name, sizeof(new_name)); + new_name[sizeof(new_name)-1] = '\0'; /* change '.' to '_' */ name = s = new_name; while ((dot = index(s, '.'))) { @@ -248,6 +253,8 @@ unsigned int x, y, h; h = height - 1; + if (cpp != 0 && width >= (UINT_MAX - 3)/cpp) + return XpmNoMemory; p = buf = (char *) XpmMalloc(width * cpp + 3); if (!buf) return (XpmNoMemory); @@ -295,6 +302,14 @@ fprintf(file, ",\n\"XPMENDEXT\""); } + +#ifndef NO_ZPIPE +FUNC(xpmPipeThrough, FILE*, (int fd, + const char* cmd, + const char* arg1, + const char* mode)); +#endif + /* * open the given file to be written as an xpmData which is returned */ @@ -303,38 +318,32 @@ char *filename; xpmData *mdata; { -#ifndef NO_ZPIPE - char buf[BUFSIZ]; - -#endif - if (!filename) { mdata->stream.file = (stdout); mdata->type = XPMFILE; } else { #ifndef NO_ZPIPE - int len = strlen(filename); + size_t len; +#endif + int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644); + if ( fd < 0 ) + return(XpmOpenFailed); +#ifndef NO_ZPIPE + len = strlen(filename); if (len > 2 && !strcmp(".Z", filename + (len - 2))) { - sprintf(buf, "compress > \"%s\"", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - + mdata->stream.file = xpmPipeThrough(fd, "compress", NULL, "w"); mdata->type = XPMPIPE; } else if (len > 3 && !strcmp(".gz", filename + (len - 3))) { - sprintf(buf, "gzip -q > \"%s\"", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - + mdata->stream.file = xpmPipeThrough(fd, "gzip", "-q", "w"); mdata->type = XPMPIPE; - } else { + } else #endif - if (!(mdata->stream.file = fopen(filename, "w"))) - return (XpmOpenFailed); - + { + mdata->stream.file = fdopen(fd, "w"); mdata->type = XPMFILE; -#ifndef NO_ZPIPE } -#endif + if (!mdata->stream.file) + return (XpmOpenFailed); } return (XpmSuccess); } @@ -346,15 +355,7 @@ xpmDataClose(mdata) xpmData *mdata; { - switch (mdata->type) { - case XPMFILE: - if (mdata->stream.file != (stdout)) - fclose(mdata->stream.file); - break; -#ifndef NO_ZPIPE - case XPMPIPE: - pclose(mdata->stream.file); - break; -#endif - } + if (mdata->stream.file != (stdout)) + fclose(mdata->stream.file); } + diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/XpmI.h x11r682/xc/extras/Xpm/lib/XpmI.h --- xc/extras/Xpm/lib/XpmI.h 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/XpmI.h 2004-12-17 02:09:36.000000000 +0100 @@ -49,8 +49,10 @@ * lets try to solve include files */ +#include #include #include +#include /* stdio.h doesn't declare popen on a Sequent DYNIX OS */ #ifdef sequent extern FILE *popen(); @@ -86,6 +88,18 @@ boundCheckingCalloc((long)(nelem),(long) (elsize)) #endif +#if defined(SCO) || defined(__USLC__) +#include /* For SIZE_MAX */ +#endif +#include +#ifndef SIZE_MAX +# ifdef ULONG_MAX +# define SIZE_MAX ULONG_MAX +# else +# define SIZE_MAX UINT_MAX +# endif +#endif + #define XPMMAXCMTLEN BUFSIZ typedef struct { unsigned int type; @@ -187,9 +201,9 @@ } *xpmHashAtom; typedef struct { - int size; - int limit; - int used; + unsigned int size; + unsigned int limit; + unsigned int used; xpmHashAtom *atomTable; } xpmHashTable; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/create.c x11r682/xc/extras/Xpm/lib/create.c --- xc/extras/Xpm/lib/create.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/create.c 2004-12-17 02:09:36.000000000 +0100 @@ -1,3 +1,4 @@ +/* $XdotOrg: xc/extras/Xpm/lib/create.c,v 1.2.4.2 2004/12/17 01:09:36 gisburn Exp $ */ /* * Copyright (C) 1989-95 GROUPE BULL * @@ -44,6 +45,8 @@ * Lorens Younes (d93-hyo@nada.kth.se) 4/96 */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include @@ -585,7 +588,7 @@ */ } else { #endif - int i; + unsigned int i; #ifndef AMIGA ncols = visual->map_entries; @@ -745,12 +748,14 @@ /* function call in case of error */ + #undef RETURN #define RETURN(status) \ +do \ { \ ErrorStatus = status; \ goto error; \ -} +} while(0) int XpmCreateImageFromXpmImage(display, image, @@ -816,6 +821,9 @@ ErrorStatus = XpmSuccess; + if (image->ncolors >= UINT_MAX / sizeof(Pixel)) + return (XpmNoMemory); + /* malloc pixels index tables */ image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors); if (!image_pixels) @@ -988,7 +996,13 @@ return (XpmNoMemory); #if !defined(FOR_MSW) && !defined(AMIGA) + if (height != 0 && (*image_return)->bytes_per_line >= INT_MAX / height) { + XDestroyImage(*image_return); + return XpmNoMemory; + } /* now that bytes_per_line must have been set properly alloc data */ + if((*image_return)->bytes_per_line == 0 || height == 0) + return XpmNoMemory; (*image_return)->data = (char *) XpmMalloc((*image_return)->bytes_per_line * height); @@ -1017,7 +1031,7 @@ LFUNC(_putbits, void, (register char *src, int dstoffset, register int numbits, register char *dst)); -LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register int nb)); +LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register unsigned int nb)); static unsigned char Const _reverse_byte[0x100] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, @@ -1057,12 +1071,12 @@ static int _XReverse_Bytes(bpt, nb) register unsigned char *bpt; - register int nb; + register unsigned int nb; { do { *bpt = _reverse_byte[*bpt]; bpt++; - } while (--nb > 0); + } while (--nb > 0); /* is nb user-controled? */ return 0; } @@ -1201,7 +1215,7 @@ register char *src; register char *dst; register unsigned int *iptr; - register int x, y, i; + register unsigned int x, y, i; register char *data; Pixel pixel, px; int nbytes, depth, ibu, ibpp; @@ -1211,8 +1225,8 @@ depth = image->depth; if (depth == 1) { ibu = image->bitmap_unit; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { + for (y = 0; y < height; y++) /* how can we trust height */ + for (x = 0; x < width; x++, iptr++) { /* how can we trust width */ pixel = pixels[*iptr]; for (i = 0, px = pixel; i < sizeof(unsigned long); i++, px >>= 8) @@ -1287,12 +1301,12 @@ { unsigned char *data; unsigned int *iptr; - int y; + unsigned int y; Pixel pixel; #ifdef WITHOUT_SPEEDUPS - int x; + unsigned int x; unsigned char *addr; data = (unsigned char *) image->data; @@ -1329,7 +1343,7 @@ #else /* WITHOUT_SPEEDUPS */ - int bpl = image->bytes_per_line; + unsigned int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; @@ -1397,11 +1411,11 @@ { unsigned char *data; unsigned int *iptr; - int y; + unsigned int y; #ifdef WITHOUT_SPEEDUPS - int x; + unsigned int x; unsigned char *addr; data = (unsigned char *) image->data; @@ -1425,7 +1439,7 @@ Pixel pixel; - int bpl = image->bytes_per_line; + unsigned int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; @@ -1478,11 +1492,11 @@ { char *data; unsigned int *iptr; - int y; + unsigned int y; #ifdef WITHOUT_SPEEDUPS - int x; + unsigned int x; data = image->data; iptr = pixelindex; @@ -1492,7 +1506,7 @@ #else /* WITHOUT_SPEEDUPS */ - int bpl = image->bytes_per_line; + unsigned int bpl = image->bytes_per_line; char *data_ptr, *max_data; data = image->data; @@ -1527,12 +1541,12 @@ PutImagePixels(image, width, height, pixelindex, pixels); else { unsigned int *iptr; - int y; + unsigned int y; char *data; #ifdef WITHOUT_SPEEDUPS - int x; + unsigned int x; data = image->data; iptr = pixelindex; @@ -1755,6 +1769,9 @@ Pixel px; int nbytes; + if(x < 0 || y < 0) + return 0; + for (i=0, px=pixel; i>=8) ((unsigned char *)&pixel)[i] = px; src = &ximage->data[XYINDEX(x, y, ximage)]; @@ -1785,7 +1802,10 @@ register char *dst; register int i; Pixel px; - int nbytes, ibpp; + unsigned int nbytes, ibpp; + + if(x < 0 || y < 0) + return 0; ibpp = ximage->bits_per_pixel; if (ximage->depth == 4) @@ -1819,6 +1839,9 @@ { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; *((unsigned long *)addr) = pixel; return 1; @@ -1834,6 +1857,9 @@ { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; addr[0] = pixel >> 24; addr[1] = pixel >> 16; @@ -1851,6 +1877,9 @@ { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; addr[3] = pixel >> 24; addr[2] = pixel >> 16; @@ -1868,6 +1897,9 @@ { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; addr[0] = pixel >> 8; addr[1] = pixel; @@ -1883,6 +1915,9 @@ { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; addr[1] = pixel >> 8; addr[0] = pixel; @@ -1896,6 +1931,9 @@ int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + ximage->data[ZINDEX8(x, y, ximage)] = pixel; return 1; } @@ -1907,6 +1945,9 @@ int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + if (pixel & 1) ximage->data[ZINDEX1(x, y, ximage)] |= 0x80 >> (x & 7); else @@ -1921,6 +1962,9 @@ int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + if (pixel & 1) ximage->data[ZINDEX1(x, y, ximage)] |= 1 << (x & 7); else @@ -2055,6 +2099,9 @@ xpmGetCmt(data, &colors_cmt); /* malloc pixels index tables */ + if (ncolors >= UINT_MAX / sizeof(Pixel)) + RETURN(XpmNoMemory); + image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors); if (!image_pixels) RETURN(XpmNoMemory); @@ -2165,7 +2212,7 @@ * free the hastable */ if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus) + RETURN(ErrorStatus); else if (USE_HASHTABLE) xpmHashTableFree(&hashtable); @@ -2309,7 +2356,8 @@ } obm = SelectObject(*dc, image->bitmap); #endif - + if (ncolors > 256) + return (XpmFileInvalid); bzero((char *)colidx, 256 * sizeof(short)); for (a = 0; a < ncolors; a++) @@ -2356,11 +2404,11 @@ /* array of pointers malloced by need */ unsigned short *cidx[256]; - int char1; + unsigned int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { - char1 = colorTable[a].string[0]; + char1 = (unsigned char) colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); @@ -2415,6 +2463,9 @@ char *s; char buf[BUFSIZ]; + if (cpp >= sizeof(buf)) + return (XpmFileInvalid); + buf[cpp] = '\0'; if (USE_HASHTABLE) { xpmHashAtom *slot; diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/data.c x11r682/xc/extras/Xpm/lib/data.c --- xc/extras/Xpm/lib/data.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/data.c 2004-12-17 02:09:36.000000000 +0100 @@ -33,6 +33,8 @@ \*****************************************************************************/ /* $XFree86: xc/extras/Xpm/lib/data.c,v 1.3 2001/10/28 03:32:10 tsi Exp $ */ +/* October 2004, source code review by Thomas Biege */ + #ifndef CXPMPROG #if 0 /* Official version number */ @@ -262,7 +264,7 @@ } Ungetc(data, c, file); } - return (n); + return (n); /* this returns bytes read + 1 */ } /* @@ -375,8 +377,9 @@ { if (!data->type) *cmt = NULL; - else if (data->CommentLength) { - *cmt = (char *) XpmMalloc(data->CommentLength + 1); + else if (data->CommentLength != 0 && data->CommentLength < UINT_MAX - 1) { + if( (*cmt = (char *) XpmMalloc(data->CommentLength + 1)) == NULL) + return XpmNoMemory; strncpy(*cmt, data->Comment, data->CommentLength); (*cmt)[data->CommentLength] = '\0'; data->CommentLength = 0; @@ -400,7 +403,7 @@ xpmParseHeader(data) xpmData *data; { - char buf[BUFSIZ]; + char buf[BUFSIZ+1] = {0}; int l, n = 0; if (data->type) { diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/hashtab.c x11r682/xc/extras/Xpm/lib/hashtab.c --- xc/extras/Xpm/lib/hashtab.c 2003-11-14 17:48:24.000000000 +0100 +++ xc/extras/Xpm/lib/hashtab.c 2004-12-17 02:09:36.000000000 +0100 @@ -135,15 +135,17 @@ xpmHashTable *table; { xpmHashAtom *atomTable = table->atomTable; - int size = table->size; + unsigned int size = table->size; xpmHashAtom *t, *p; int i; - int oldSize = size; + unsigned int oldSize = size; t = atomTable; HASH_TABLE_GROWS table->size = size; table->limit = size / 3; + if (size >= UINT_MAX / sizeof(*atomTable)) + return (XpmNoMemory); atomTable = (xpmHashAtom *) XpmMalloc(size * sizeof(*atomTable)); if (!atomTable) return (XpmNoMemory); @@ -204,6 +206,8 @@ table->size = INITIAL_HASH_SIZE; table->limit = table->size / 3; table->used = 0; + if (table->size >= UINT_MAX / sizeof(*atomTable)) + return (XpmNoMemory); atomTable = (xpmHashAtom *) XpmMalloc(table->size * sizeof(*atomTable)); if (!atomTable) return (XpmNoMemory); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/misc.c x11r682/xc/extras/Xpm/lib/misc.c --- xc/extras/Xpm/lib/misc.c 2003-11-14 17:48:24.000000000 +0100 +++ xc/extras/Xpm/lib/misc.c 2004-12-17 02:09:36.000000000 +0100 @@ -44,7 +44,7 @@ char *s1; { char *s2; - int l = strlen(s1) + 1; + size_t l = strlen(s1) + 1; if (s2 = (char *) XpmMalloc(l)) strcpy(s2, s1); diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/parse.c x11r682/xc/extras/Xpm/lib/parse.c --- xc/extras/Xpm/lib/parse.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/parse.c 2004-12-17 02:09:36.000000000 +0100 @@ -1,3 +1,4 @@ +/* $XdotOrg: xc/extras/Xpm/lib/parse.c,v 1.2.4.2 2004/12/17 01:09:36 gisburn Exp $ */ /* * Copyright (C) 1989-95 GROUPE BULL * @@ -40,10 +41,30 @@ * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include #include +#ifdef HAS_STRLCAT +# define STRLCAT(dst, src, dstsize) do { \ + if (strlcat(dst, src, dstsize) >= (dstsize)) \ + return (XpmFileInvalid); } while(0) +# define STRLCPY(dst, src, dstsize) do { \ + if (strlcpy(dst, src, dstsize) >= (dstsize)) \ + return (XpmFileInvalid); } while(0) +#else +# define STRLCAT(dst, src, dstsize) do { \ + if ((strlen(dst) + strlen(src)) < (dstsize)) \ + strcat(dst, src); \ + else return (XpmFileInvalid); } while(0) +# define STRLCPY(dst, src, dstsize) do { \ + if (strlen(src) < (dstsize)) \ + strcpy(dst, src); \ + else return (XpmFileInvalid); } while(0) +#endif + LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, unsigned int height, unsigned int ncolors, unsigned int cpp, XpmColor *colorTable, @@ -66,7 +87,7 @@ unsigned int *extensions; { unsigned int l; - char buf[BUFSIZ]; + char buf[BUFSIZ + 1]; if (!data->format) { /* XPM 2 or 3 */ @@ -175,10 +196,10 @@ XpmColor **colorTablePtr; xpmHashTable *hashtable; { - unsigned int key = 0, l, a, b; + unsigned int key = 0, l, a, b, len; unsigned int curkey; /* current color key */ unsigned int lastwaskey; /* key read */ - char buf[BUFSIZ]; + char buf[BUFSIZ+1]; char curbuf[BUFSIZ]; /* current buffer */ char **sptr, *s; XpmColor *color; @@ -186,6 +207,8 @@ char **defaults; int ErrorStatus; + if (ncolors >= UINT_MAX / sizeof(XpmColor)) + return (XpmNoMemory); colorTable = (XpmColor *) XpmCalloc(ncolors, sizeof(XpmColor)); if (!colorTable) return (XpmNoMemory); @@ -197,6 +220,10 @@ /* * read pixel value */ + if (cpp >= UINT_MAX - 1) { + xpmFreeColorTable(colorTable, ncolors); + return (XpmNoMemory); + } color->string = (char *) XpmMalloc(cpp + 1); if (!color->string) { xpmFreeColorTable(colorTable, ncolors); @@ -234,13 +261,14 @@ } if (!lastwaskey && key < NKEYS) { /* open new key */ if (curkey) { /* flush string */ - s = (char *) XpmMalloc(strlen(curbuf) + 1); + len = strlen(curbuf) + 1; + s = (char *) XpmMalloc(len); if (!s) { xpmFreeColorTable(colorTable, ncolors); return (XpmNoMemory); } defaults[curkey] = s; - strcpy(s, curbuf); + memcpy(s, curbuf, len); } curkey = key + 1; /* set new key */ *curbuf = '\0'; /* reset curbuf */ @@ -251,9 +279,9 @@ return (XpmFileInvalid); } if (!lastwaskey) - strcat(curbuf, " "); /* append space */ + STRLCAT(curbuf, " ", sizeof(curbuf));/* append space */ buf[l] = '\0'; - strcat(curbuf, buf);/* append buf */ + STRLCAT(curbuf, buf, sizeof(curbuf)); /* append buf */ lastwaskey = 0; } } @@ -261,12 +289,13 @@ xpmFreeColorTable(colorTable, ncolors); return (XpmFileInvalid); } - s = defaults[curkey] = (char *) XpmMalloc(strlen(curbuf) + 1); + len = strlen(curbuf) + 1; /* integer overflow just theoretically possible */ + s = defaults[curkey] = (char *) XpmMalloc(len); if (!s) { xpmFreeColorTable(colorTable, ncolors); return (XpmNoMemory); } - strcpy(s, curbuf); + memcpy(s, curbuf, len); } } else { /* XPM 1 */ /* get to the beginning of the first string */ @@ -279,6 +308,10 @@ /* * read pixel value */ + if (cpp >= UINT_MAX - 1) { + xpmFreeColorTable(colorTable, ncolors); + return (XpmNoMemory); + } color->string = (char *) XpmMalloc(cpp + 1); if (!color->string) { xpmFreeColorTable(colorTable, ncolors); @@ -307,19 +340,20 @@ *curbuf = '\0'; /* init curbuf */ while ((l = xpmNextWord(data, buf, BUFSIZ))) { if (*curbuf != '\0') - strcat(curbuf, " ");/* append space */ + STRLCAT(curbuf, " ", sizeof(curbuf));/* append space */ buf[l] = '\0'; - strcat(curbuf, buf); /* append buf */ + STRLCAT(curbuf, buf, sizeof(curbuf)); /* append buf */ } - s = (char *) XpmMalloc(strlen(curbuf) + 1); + len = strlen(curbuf) + 1; + s = (char *) XpmMalloc(len); if (!s) { xpmFreeColorTable(colorTable, ncolors); return (XpmNoMemory); } - strcpy(s, curbuf); + memcpy(s, curbuf, len); color->c_color = s; *curbuf = '\0'; /* reset curbuf */ - if (a < ncolors - 1) + if (a < ncolors - 1) /* can we trust ncolors -> leave data's bounds */ xpmNextString(data); /* get to the next string */ } } @@ -338,9 +372,12 @@ xpmHashTable *hashtable; unsigned int **pixels; { - unsigned int *iptr, *iptr2; + unsigned int *iptr, *iptr2 = NULL; /* found by Egbert Eich */ unsigned int a, x, y; + if ((height > 0 && width >= UINT_MAX / height) || + width * height >= UINT_MAX / sizeof(unsigned int)) + return XpmNoMemory; #ifndef FOR_MSW iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height); #else @@ -364,6 +401,11 @@ { unsigned short colidx[256]; + if (ncolors > 256) { + XpmFree(iptr2); /* found by Egbert Eich */ + return (XpmFileInvalid); + } + bzero((char *)colidx, 256 * sizeof(short)); for (a = 0; a < ncolors; a++) colidx[(unsigned char)colorTable[a].string[0]] = a + 1; @@ -389,16 +431,20 @@ { /* free all allocated pointers at all exits */ -#define FREE_CIDX {int f; for (f = 0; f < 256; f++) \ -if (cidx[f]) XpmFree(cidx[f]);} +#define FREE_CIDX \ +do \ +{ \ + int f; for (f = 0; f < 256; f++) \ + if (cidx[f]) XpmFree(cidx[f]); \ +} while(0) /* array of pointers malloced by need */ unsigned short *cidx[256]; - int char1; + unsigned int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { - char1 = colorTable[a].string[0]; + char1 = (unsigned char) colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); @@ -442,6 +488,11 @@ char *s; char buf[BUFSIZ]; + if (cpp >= sizeof(buf)) { + XpmFree(iptr2); /* found by Egbert Eich */ + return (XpmFileInvalid); + } + buf[cpp] = '\0'; if (USE_HASHTABLE) { xpmHashAtom *slot; @@ -450,7 +501,7 @@ xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) - *s = xpmGetC(data); + *s = xpmGetC(data); /* int assigned to char, not a problem here */ slot = xpmHashSlot(hashtable, buf); if (!*slot) { /* no color matches */ XpmFree(iptr2); @@ -464,7 +515,7 @@ xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) - *s = xpmGetC(data); + *s = xpmGetC(data); /* int assigned to char, not a problem here */ for (a = 0; a < ncolors; a++) if (!strcmp(colorTable[a].string, buf)) break; @@ -519,7 +570,7 @@ while (!notstart && notend) { /* there starts an extension */ ext = (XpmExtension *) - XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); + XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); /* can the loop be forced to iterate often enough to make "(num + 1) * sizeof(XpmExtension)" wrapping? */ if (!ext) { XpmFree(string); XpmFreeExtensions(exts, num); @@ -556,7 +607,7 @@ while ((notstart = strncmp("XPMEXT", string, 6)) && (notend = strncmp("XPMENDEXT", string, 9))) { sp = (char **) - XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); + XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); /* can we iterate enough for a wrapping? */ if (!sp) { XpmFree(string); ext->nlines = nlines; @@ -596,9 +647,9 @@ /* function call in case of error */ #undef RETURN #define RETURN(status) \ -{ \ +do { \ goto error; \ -} +} while(0) /* * This function parses an Xpm file or data and store the found informations diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/scan.c x11r682/xc/extras/Xpm/lib/scan.c --- xc/extras/Xpm/lib/scan.c 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/scan.c 2004-12-17 02:09:36.000000000 +0100 @@ -43,6 +43,8 @@ * Lorens Younes (d93-hyo@nada.kth.se) 4/96 */ +/* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #define MAXPRINTABLE 92 /* number of printable ascii chars @@ -107,7 +109,8 @@ LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp, XpmAttributes *attributes)); -LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, int ncolors, +LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, + unsigned int ncolors, Pixel *pixels, unsigned int mask, unsigned int cpp, XpmAttributes *attributes)); @@ -171,10 +174,10 @@ /* function call in case of error */ #undef RETURN #define RETURN(status) \ -{ \ +do { \ ErrorStatus = status; \ goto error; \ -} +} while(0) /* * This function scans the given image and stores the found informations in @@ -232,11 +235,17 @@ else cpp = 0; + if ((height > 0 && width >= UINT_MAX / height) || + width * height >= UINT_MAX / sizeof(unsigned int)) + RETURN(XpmNoMemory); pmap.pixelindex = (unsigned int *) XpmCalloc(width * height, sizeof(unsigned int)); if (!pmap.pixelindex) RETURN(XpmNoMemory); + if (pmap.size >= UINT_MAX / sizeof(Pixel)) + RETURN(XpmNoMemory); + pmap.pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * pmap.size); if (!pmap.pixels) RETURN(XpmNoMemory); @@ -301,7 +310,8 @@ * get rgb values and a string of char, and possibly a name for each * color */ - + if (pmap.ncolors >= UINT_MAX / sizeof(XpmColor)) + RETURN(XpmNoMemory); colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor)); if (!colorTable) RETURN(XpmNoMemory); @@ -360,6 +370,8 @@ /* first get a character string */ a = 0; + if (cpp >= UINT_MAX - 1) + return (XpmNoMemory); if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) return (XpmNoMemory); *s++ = printable[c = a % MAXPRINTABLE]; @@ -407,7 +419,7 @@ ScanOtherColors(display, colors, ncolors, pixels, mask, cpp, attributes) Display *display; XpmColor *colors; - int ncolors; + unsigned int ncolors; Pixel *pixels; unsigned int mask; unsigned int cpp; @@ -451,6 +463,8 @@ } /* first get character strings and rgb values */ + if (ncolors >= UINT_MAX / sizeof(XColor) || cpp >= UINT_MAX - 1) + return (XpmNoMemory); xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors); if (!xcolors) return (XpmNoMemory); @@ -607,7 +621,7 @@ char *dst; unsigned int *iptr; char *data; - int x, y, i; + unsigned int x, y, i; int bits, depth, ibu, ibpp, offset; unsigned long lbt; Pixel pixel, px; @@ -709,7 +723,7 @@ unsigned char *addr; unsigned char *data; unsigned int *iptr; - int x, y; + unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; @@ -774,7 +788,7 @@ unsigned char *addr; unsigned char *data; unsigned int *iptr; - int x, y; + unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; @@ -819,7 +833,7 @@ { unsigned int *iptr; unsigned char *data; - int x, y; + unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; @@ -852,7 +866,7 @@ storeFuncPtr storeFunc; { unsigned int *iptr; - int x, y; + unsigned int x, y; char *data; Pixel pixel; int xoff, yoff, offset, bpl; @@ -888,11 +902,11 @@ # else /* AMIGA */ #define CLEAN_UP(status) \ -{\ +do {\ if (pixels) XpmFree (pixels);\ if (tmp_img) FreeXImage (tmp_img);\ return (status);\ -} +} while(0) static int AGetImagePixels ( @@ -913,7 +927,7 @@ tmp_img = AllocXImage ((((width+15)>>4)<<4), 1, image->rp->BitMap->Depth); if (tmp_img == NULL) - CLEAN_UP (XpmNoMemory) + CLEAN_UP (XpmNoMemory); iptr = pmap->pixelindex; for (y = 0; y < height; ++y) @@ -922,11 +936,11 @@ for (x = 0; x < width; ++x, ++iptr) { if ((*storeFunc) (pixels[x], pmap, iptr)) - CLEAN_UP (XpmNoMemory) + CLEAN_UP (XpmNoMemory); } } - CLEAN_UP (XpmSuccess) + CLEAN_UP (XpmSuccess); } #undef CLEAN_UP diff -N -x '*CVS*' -r -u x11r680/xc/extras/Xpm/lib/xpm.h x11r682/xc/extras/Xpm/lib/xpm.h --- xc/extras/Xpm/lib/xpm.h 2004-04-23 20:42:32.000000000 +0200 +++ xc/extras/Xpm/lib/xpm.h 2004-12-13 04:51:37.000000000 +0100 @@ -284,9 +284,7 @@ * functions declarations */ -#ifdef __cplusplus -extern "C" { -#endif +_XFUNCPROTOBEGIN /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ /* Same for Amiga! */ @@ -440,10 +438,7 @@ FUNC(XpmFree, void, (void *ptr)); -#ifdef __cplusplus -} /* for C++ V2.0 */ -#endif - +_XFUNCPROTOEND /* backward compatibility */ diff -N -x '*CVS*' -r -u x11r680/xc/fonts/bdf/100dpi/Imakefile x11r682/xc/fonts/bdf/100dpi/Imakefile --- xc/fonts/bdf/100dpi/Imakefile 2004-08-26 13:58:05.000000000 +0200 +++ xc/fonts/bdf/100dpi/Imakefile 2004-12-13 15:19:03.000000000 +0100 @@ -11,8 +11,10 @@ OBJS1 = $(UCSOBJS1) $(DERIVEDOBJS1) $(PREDERIVEDOBJS1) OBJS2 = $(UCSOBJS2) $(DERIVEDOBJS2) $(PREDERIVEDOBJS2) $(MISCOBJS) +OBJS3 = $(DERIVEDOBJS3) +OBJS4 = $(DERIVEDOBJS4) -OBJS = $(OBJS1) $(OBJS2) +OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) FONTINSTDIR = $(FONTDIR)/100dpi @@ -21,6 +23,8 @@ #ifndef LynxOSArchitecture InstallFontObjs($(OBJS1),$(FONTINSTDIR)) InstallFontObjs($(OBJS2),$(FONTINSTDIR)) +InstallFontObjs($(OBJS3),$(FONTINSTDIR)) +InstallFontObjs($(OBJS4),$(FONTINSTDIR)) InstallFontAliases($(FONTINSTDIR)) InstallEncodingsDir($(ENCODINGSSRC),$(FONTINSTDIR)) #else diff -N -x '*CVS*' -r -u x11r680/xc/fonts/bdf/75dpi/Imakefile x11r682/xc/fonts/bdf/75dpi/Imakefile --- xc/fonts/bdf/75dpi/Imakefile 2004-08-26 13:58:05.000000000 +0200 +++ xc/fonts/bdf/75dpi/Imakefile 2004-12-13 15:19:03.000000000 +0100 @@ -11,8 +11,10 @@ OBJS1 = $(UCSOBJS1) $(DERIVEDOBJS1) $(PREDERIVEDOBJS1) OBJS2 = $(UCSOBJS2) $(DERIVEDOBJS2) $(PREDERIVEDOBJS2) $(MISCOBJS) +OBJS3 = $(DERIVEDOBJS3) +OBJS4 = $(DERIVEDOBJS4) -OBJS = $(OBJS1) $(OBJS2) +OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) FONTINSTDIR = $(FONTDIR)/75dpi @@ -21,6 +23,8 @@ #ifndef LynxOSArchitecture InstallFontObjs($(OBJS1),$(FONTINSTDIR)) InstallFontObjs($(OBJS2),$(FONTINSTDIR)) +InstallFontObjs($(OBJS3),$(FONTINSTDIR)) +InstallFontObjs($(OBJS4),$(FONTINSTDIR)) InstallFontAliases($(FONTINSTDIR)) InstallEncodingsDir($(ENCODINGSSRC),$(FONTINSTDIR)) #else diff -N -x '*CVS*' -r -u x11r680/xc/fonts/encodings/Imakefile x11r682/xc/fonts/encodings/Imakefile --- xc/fonts/encodings/Imakefile 2004-04-23 20:43:02.000000000 +0200 +++ xc/fonts/encodings/Imakefile 2004-12-13 14:50:44.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/fonts/encodings/Imakefile,v 1.2 2004/04/23 18:43:02 eich Exp $ +XCOMM $XdotOrg: xc/fonts/encodings/Imakefile,v 1.2.4.1 2004/12/13 13:50:44 gisburn Exp $ XCOMM $XFree86: xc/fonts/encodings/Imakefile,v 1.10 2003/06/26 10:19:41 eich Exp $ #define IHaveSubdirs @@ -10,6 +10,7 @@ EncObjComp(adobe-symbol) \ EncObj(ansi-1251) \ EncObj(armscii-8) \ + EncObj(ascii-0) \ EncObj(dec-special) \ EncObj(ibm-cp437) EncObj(ibm-cp850) \ EncObj(ibm-cp852) EncObj(ibm-cp866) \ diff -N -x '*CVS*' -r -u x11r680/xc/fonts/encodings/ascii-0.enc x11r682/xc/fonts/encodings/ascii-0.enc --- xc/fonts/encodings/ascii-0.enc 1970-01-01 01:00:00.000000000 +0100 +++ xc/fonts/encodings/ascii-0.enc 2004-12-13 14:50:44.000000000 +0100 @@ -0,0 +1,101 @@ +STARTENCODING ascii-0 +SIZE 0x100 +STARTMAPPING unicode + +0x21 0x0021 +0x22 0x0022 +0x23 0x0023 +0x24 0x0024 +0x25 0x0025 +0x26 0x0026 +0x27 0x0027 +0x28 0x0028 +0x29 0x0029 +0x2A 0x002A +0x2B 0x002B +0x2C 0x002C +0x2D 0x002D +0x2E 0x002E +0x2F 0x002F +0x30 0x0030 +0x31 0x0031 +0x32 0x0032 +0x33 0x0033 +0x34 0x0034 +0x35 0x0035 +0x36 0x0036 +0x37 0x0037 +0x38 0x0038 +0x39 0x0039 +0x3A 0x003A +0x3B 0x003B +0x3C 0x003C +0x3D 0x003D +0x3E 0x003E +0x3F 0x003F +0x40 0x0040 +0x41 0x0041 +0x42 0x0042 +0x43 0x0043 +0x44 0x0044 +0x45 0x0045 +0x46 0x0046 +0x47 0x0047 +0x48 0x0048 +0x49 0x0049 +0x4A 0x004A +0x4B 0x004B +0x4C 0x004C +0x4D 0x004D +0x4E 0x004E +0x4F 0x004F +0x50 0x0050 +0x51 0x0051 +0x52 0x0052 +0x53 0x0053 +0x54 0x0054 +0x55 0x0055 +0x56 0x0056 +0x57 0x0057 +0x58 0x0058 +0x59 0x0059 +0x5A 0x005A +0x5B 0x005B +0x5C 0x005C +0x5D 0x005D +0x5E 0x005E +0x5F 0x005F +0x60 0x0060 +0x61 0x0061 +0x62 0x0062 +0x63 0x0063 +0x64 0x0064 +0x65 0x0065 +0x66 0x0066 +0x67 0x0067 +0x68 0x0068 +0x69 0x0069 +0x6A 0x006A +0x6B 0x006B +0x6C 0x006C +0x6D 0x006D +0x6E 0x006E +0x6F 0x006F +0x70 0x0070 +0x71 0x0071 +0x72 0x0072 +0x73 0x0073 +0x74 0x0074 +0x75 0x0075 +0x76 0x0076 +0x77 0x0077 +0x78 0x0078 +0x79 0x0079 +0x7A 0x007A +0x7B 0x007B +0x7C 0x007C +0x7D 0x007D +0x7E 0x007E +0x7F 0x0020 +ENDMAPPING +ENDENCODING diff -N -x '*CVS*' -r -u x11r680/xc/include/Xos.h x11r682/xc/include/Xos.h --- xc/include/Xos.h 2004-04-23 20:43:05.000000000 +0200 +++ xc/include/Xos.h 2005-01-12 03:55:30.000000000 +0100 @@ -1,5 +1,5 @@ /* - * $XdotOrg: xc/include/Xos.h,v 1.2 2004/04/23 18:43:05 eich Exp $ + * $XdotOrg: xc/include/Xos.h,v 1.2.4.1 2005/01/12 02:55:30 gisburn Exp $ * $Xorg: Xos.h,v 1.6 2001/02/09 02:03:22 xorgcvs Exp $ * * @@ -276,7 +276,7 @@ #endif #if defined(ISC) || defined(__UNIXOS2__) || \ - (defined(linux) && !defined(__GLIBC__)) || \ + (defined(__linux__) && !defined(__GLIBC__)) || \ (defined(__QNX__) && !defined(UNIXCONN)) /* * Some OS's may not have this diff -N -x '*CVS*' -r -u x11r680/xc/include/Xthreads.h x11r682/xc/include/Xthreads.h --- xc/include/Xthreads.h 2004-04-23 20:43:05.000000000 +0200 +++ xc/include/Xthreads.h 2005-01-12 03:55:30.000000000 +0100 @@ -267,7 +267,7 @@ #define xthread_clear_id(id) id = _X_no_thread_id #define xthread_equal(id1,id2) pthread_equal(id1, id2) #endif /* _DECTHREADS_ */ -#if defined(linux) +#if defined(__linux__) #define xthread_have_id(id) !pthread_equal(id, 0) #define xthread_clear_id(id) id = 0 #define xthread_equal(id1,id2) pthread_equal(id1, id2) diff -N -x '*CVS*' -r -u x11r680/xc/include/extensions/Imakefile x11r682/xc/include/extensions/Imakefile --- xc/include/extensions/Imakefile 2004-08-10 00:37:21.000000000 +0200 +++ xc/include/extensions/Imakefile 2004-12-13 04:12:16.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/include/extensions/Imakefile,v 1.10 2004/08/09 22:37:21 kem Exp $ +XCOMM $XdotOrg: xc/include/extensions/Imakefile,v 1.10.2.1 2004/12/13 03:12:16 gisburn Exp $ XCOMM $Xorg: Imakefile,v 1.3 2000/08/18 04:05:44 coskrey Exp $ @@ -46,7 +46,7 @@ XFIXESHEADERS = xfixeswire.h xfixesproto.h #endif #if BuildDamage || BuildDamageLibrary -DAMAGEHEADERS = damage.h damagewire.h damageproto.h +DAMAGEHEADERS = damagewire.h damageproto.h #endif #if BuildComposite || BuildCompositeLibrary COMPOSITEHEADERS = composite.h compositeproto.h diff -N -x '*CVS*' -r -u x11r680/xc/include/extensions/Xinerama.h x11r682/xc/include/extensions/Xinerama.h --- xc/include/extensions/Xinerama.h 2004-04-23 20:43:06.000000000 +0200 +++ xc/include/extensions/Xinerama.h 2004-12-13 03:56:12.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/include/extensions/Xinerama.h,v 1.2 2004/04/23 18:43:06 eich Exp $ */ +/* $XdotOrg: xc/include/extensions/Xinerama.h,v 1.2.4.1 2004/12/13 02:56:12 gisburn Exp $ */ /* Copyright 2003 The Open Group @@ -29,6 +29,8 @@ #ifndef _Xinerama_h #define _Xinerama_h +#include + typedef struct { int screen_number; short x_org; diff -N -x '*CVS*' -r -u x11r680/xc/include/extensions/damage.h x11r682/xc/include/extensions/damage.h --- xc/include/extensions/damage.h 2004-07-29 21:29:55.000000000 +0200 +++ xc/include/extensions/damage.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,108 +0,0 @@ -/* - * $XFree86$ - */ - -/* - * Copyright (C) 2002 Red Hat, Inc. - * Developer: Havoc Pennington, Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation 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 X CONSORTIUM BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the X Consortium - * shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written - * authorization from the X Consortium. - * - */ - -/* The DAMAGE extension lets you track modified portions of the - * framebuffer. i.e. anytime a pixel changes onscreen you get - * notification, and you can ask the server for a region describing - * changes since you last asked. - * - * The function prototypes etc. look like they work for any window, - * but right now it really only works for root windows. - */ - -#ifndef _X_DAMAGE_H_ -#define _X_DAMAGE_H_ - -#include -#include - -/* A server-side resource that tracks a damage region for a given - * window. - */ -typedef unsigned long XDamageRecorder; - -typedef struct { - int type; /* of event */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came frome a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* window on which damage recorder is recording */ - XDamageRecorder recorder; /* the damage recorder this event is for */ -} XDamageNotifyEvent; - -_XFUNCPROTOBEGIN - -Bool XDamageQueryExtension ( - Display *dpy, - int *event_base, - int *error_base -); - -Status XDamageQueryVersion ( - Display *dpy, - int *major, - int *minor -); - -Bool XDamageScreenSupportsRootRecorder ( - Display *dpy, - int screen_num -); - -XDamageRecorder XDamageCreateRecorder ( - Display *dpy, - Window window -); - -void XDamageDestroyRecorder ( - Display *dpy, - XDamageRecorder recorder -); - -/* Gets damage recorded for given rectangle since last time we got damage - * for that rectangle. i.e. returns the intersection of the current - * damage region and the rectangle, and subtracts the rectangle - * from the current damage region. - */ -int XDamageGetDamage ( - Display *dpy, - XDamageRecorder recorder, - _Xconst XRectangle *rect, - XRectangle **rects, - int *n -); - -_XFUNCPROTOEND - -#endif /* _X_DAMAGE_H_ */ diff -N -x '*CVS*' -r -u x11r680/xc/include/extensions/dpms.h x11r682/xc/include/extensions/dpms.h --- xc/include/extensions/dpms.h 2004-04-23 20:43:06.000000000 +0200 +++ xc/include/extensions/dpms.h 2004-12-13 04:48:01.000000000 +0100 @@ -28,6 +28,9 @@ ******************************************************************/ /* $XFree86: xc/include/extensions/dpms.h,v 3.4 2000/03/15 16:51:51 tsi Exp $ */ +#ifndef _X11_EXTENSIONS_DPMS_H +#define _X11_EXTENSIONS_DPMS_H 1 + /* * HISTORY */ @@ -46,6 +49,8 @@ #include #include +_XFUNCPROTOBEGIN + extern Bool DPMSQueryExtension(Display *, int *, int *); extern Status DPMSGetVersion(Display *, int *, int *); extern Bool DPMSCapable(Display *); @@ -55,6 +60,8 @@ extern Status DPMSDisable(Display *); extern Status DPMSForceLevel(Display *, CARD16); extern Status DPMSInfo(Display *, CARD16 *, BOOL *); -#endif +_XFUNCPROTOEND +#endif /* !DPMS_SERVER */ +#endif /* !_X11_EXTENSIONS_DPMS_H */ diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/glx/glxcmds.c x11r682/xc/lib/GL/glx/glxcmds.c --- xc/lib/GL/glx/glxcmds.c 2004-06-16 11:35:43.000000000 +0200 +++ xc/lib/GL/glx/glxcmds.c 2004-12-13 05:18:21.000000000 +0100 @@ -1505,6 +1505,8 @@ if ( (priv->majorVersion > 1) || (priv->minorVersion >= 3) ) { xGLXQueryContextReq * req; + GetReq(GLXQueryContext, req); + req->reqType = opcode; req->glxCode = X_GLXQueryContext; req->context = (unsigned int)(ctx->xid); diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/glx/glxext.c x11r682/xc/lib/GL/glx/glxext.c --- xc/lib/GL/glx/glxext.c 2004-07-27 22:23:58.000000000 +0200 +++ xc/lib/GL/glx/glxext.c 2004-12-13 14:55:57.000000000 +0100 @@ -730,7 +730,7 @@ __DRIscreenPrivate *psp = NULL; #ifndef GLX_USE_APPLEGL drm_handle_t hSAREA; - drmAddress pSAREA; + drmAddress pSAREA = MAP_FAILED; char *BusID; __DRIversion ddx_version; __DRIversion dri_version; @@ -742,7 +742,6 @@ const char * err_extra; int api_ver = __glXGetInternalVersion(); - dri_version.major = driDpy->private->driMajor; dri_version.minor = driDpy->private->driMinor; dri_version.patch = driDpy->private->driPatch; @@ -751,6 +750,9 @@ err_msg = "XF86DRIOpenConnection"; err_extra = NULL; + memset (&framebuffer, 0, sizeof (framebuffer)); + framebuffer.base = MAP_FAILED; + if (XF86DRIOpenConnection(dpy, scrn, &hSAREA, &BusID)) { fd = drmOpen(NULL,BusID); Xfree(BusID); /* No longer needed */ diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/Imakefile x11r682/xc/lib/GL/mesa/Imakefile --- xc/lib/GL/mesa/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,11 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif + #if Malloc0ReturnsNull ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL #endif diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/drivers/dri/r128/Imakefile.inc x11r682/xc/lib/GL/mesa/drivers/dri/r128/Imakefile.inc --- xc/lib/GL/mesa/drivers/dri/r128/Imakefile.inc 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/drivers/dri/r128/Imakefile.inc 2004-12-15 02:50:55.000000000 +0100 @@ -48,8 +48,7 @@ $(MESADRVR128BUILDDIR)r128_tex.c \ $(MESADRVR128BUILDDIR)r128_texmem.c \ $(MESADRVR128BUILDDIR)r128_texstate.c \ - $(MESADRVR128BUILDDIR)r128_tris.c \ - $(MESADRVR128BUILDDIR)r128_vb.c + $(MESADRVR128BUILDDIR)r128_tris.c R128OBJS = $(MESADRVR128BUILDDIR)r128_context.o \ $(MESADRVR128BUILDDIR)r128_dd.o \ @@ -61,8 +60,7 @@ $(MESADRVR128BUILDDIR)r128_tex.o \ $(MESADRVR128BUILDDIR)r128_texmem.o \ $(MESADRVR128BUILDDIR)r128_texstate.o \ - $(MESADRVR128BUILDDIR)r128_tris.o \ - $(MESADRVR128BUILDDIR)r128_vb.o + $(MESADRVR128BUILDDIR)r128_tris.o R128UOBJS = $(MESADRVR128BUILDDIR)unshared/r128_context.o \ $(MESADRVR128BUILDDIR)unshared/r128_dd.o \ @@ -74,8 +72,7 @@ $(MESADRVR128BUILDDIR)unshared/r128_tex.o \ $(MESADRVR128BUILDDIR)unshared/r128_texmem.o \ $(MESADRVR128BUILDDIR)unshared/r128_texstate.o \ - $(MESADRVR128BUILDDIR)unshared/r128_tris.o \ - $(MESADRVR128BUILDDIR)unshared/r128_vb.o + $(MESADRVR128BUILDDIR)unshared/r128_tris.o R128DOBJS = $(MESADRVR128BUILDDIR)debugger/r128_context.o \ $(MESADRVR128BUILDDIR)debugger/r128_dd.o \ @@ -87,8 +84,7 @@ $(MESADRVR128BUILDDIR)debugger/r128_tex.o \ $(MESADRVR128BUILDDIR)debugger/r128_texmem.o \ $(MESADRVR128BUILDDIR)debugger/r128_texstate.o \ - $(MESADRVR128BUILDDIR)debugger/r128_tris.o \ - $(MESADRVR128BUILDDIR)debugger/r128_vb.o + $(MESADRVR128BUILDDIR)debugger/r128_tris.o R128POBJS = $(MESADRVR128BUILDDIR)profiled/r128_context.o \ $(MESADRVR128BUILDDIR)profiled/r128_dd.o \ @@ -100,8 +96,7 @@ $(MESADRVR128BUILDDIR)profiled/r128_tex.o \ $(MESADRVR128BUILDDIR)profiled/r128_texmem.o \ $(MESADRVR128BUILDDIR)profiled/r128_texstate.o \ - $(MESADRVR128BUILDDIR)profiled/r128_tris.o \ - $(MESADRVR128BUILDDIR)profiled/r128_vb.o + $(MESADRVR128BUILDDIR)profiled/r128_tris.o #ifdef NeedToLinkMesaSrc LinkSourceFile(r128_context.c, $(MESADRVSRCDIR)/r128) @@ -125,6 +120,4 @@ LinkSourceFile(r128_texstate.c, $(MESADRVSRCDIR)/r128) LinkSourceFile(r128_tris.c, $(MESADRVSRCDIR)/r128) LinkSourceFile(r128_tris.h, $(MESADRVSRCDIR)/r128) -LinkSourceFile(r128_vb.c, $(MESADRVSRCDIR)/r128) -LinkSourceFile(r128_vb.h, $(MESADRVSRCDIR)/r128) #endif diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/drivers/osmesa/Imakefile x11r682/xc/lib/GL/mesa/drivers/osmesa/Imakefile --- xc/lib/GL/mesa/drivers/osmesa/Imakefile 2004-08-19 01:12:49.000000000 +0200 +++ xc/lib/GL/mesa/drivers/osmesa/Imakefile 2004-12-15 04:16:24.000000000 +0100 @@ -8,6 +8,11 @@ #define DoDebugLib DebugLibGlx #define DoProfileLib ProfileLibGlx +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif + #include "../../array_cache/Imakefile.inc" #include "../../math/Imakefile.inc" #include "../../main/Imakefile.inc" diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/math/Imakefile x11r682/xc/lib/GL/mesa/math/Imakefile --- xc/lib/GL/mesa/math/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/math/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,11 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif + #define MesaMathBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/shader/Imakefile x11r682/xc/lib/GL/mesa/shader/Imakefile --- xc/lib/GL/mesa/shader/Imakefile 2004-06-16 11:27:56.000000000 +0200 +++ xc/lib/GL/mesa/shader/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,10 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif #define MesaShaderBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/sparc/Imakefile x11r682/xc/lib/GL/mesa/sparc/Imakefile --- xc/lib/GL/mesa/sparc/Imakefile 2004-08-19 09:34:43.000000000 +0200 +++ xc/lib/GL/mesa/sparc/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $XFree86: xc/lib/GL/mesa/src/SPARC/Imakefile,v 1.3 2002/11/22 22:55:58 tsi Exp $ -XCOMM $XdotOrg: xc/lib/GL/mesa/sparc/Imakefile,v 1.2 2004/08/19 07:34:43 kem Exp $ +XCOMM $XdotOrg: xc/lib/GL/mesa/sparc/Imakefile,v 1.2.2.1 2004/12/13 04:12:55 gisburn Exp $ /* * Need both shared and unshared Mesa objects in the following cases: @@ -25,6 +25,10 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif #if Malloc0ReturnsNull ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/swrast/Imakefile x11r682/xc/lib/GL/mesa/swrast/Imakefile --- xc/lib/GL/mesa/swrast/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/swrast/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,10 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif #define MesaSwrastBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/swrast_setup/Imakefile x11r682/xc/lib/GL/mesa/swrast_setup/Imakefile --- xc/lib/GL/mesa/swrast_setup/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/swrast_setup/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,11 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif + #define MesaSwrastSetupBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/tnl/Imakefile x11r682/xc/lib/GL/mesa/tnl/Imakefile --- xc/lib/GL/mesa/tnl/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/tnl/Imakefile 2004-12-13 05:12:55.000000000 +0100 @@ -26,6 +26,10 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif #define MesaTnlBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/GL/mesa/tnl_dd/Imakefile x11r682/xc/lib/GL/mesa/tnl_dd/Imakefile --- xc/lib/GL/mesa/tnl_dd/Imakefile 2004-06-16 11:25:10.000000000 +0200 +++ xc/lib/GL/mesa/tnl_dd/Imakefile 2004-12-13 05:12:56.000000000 +0100 @@ -26,6 +26,10 @@ #define DoProfileLib NO #endif +/* Large PIC tables needed for Solaris SPARC builds */ +#if (defined(SunArchitecture) && defined(SparcArchitecture)) +# define LargePICTable YES +#endif #define MesaTnlDdBuildDir /**/ #define NeedToLinkMesaSrc diff -N -x '*CVS*' -r -u x11r680/xc/lib/X11/XKBBind.c x11r682/xc/lib/X11/XKBBind.c --- xc/lib/X11/XKBBind.c 2004-04-23 20:43:24.000000000 +0200 +++ xc/lib/X11/XKBBind.c 2004-12-13 03:42:33.000000000 +0100 @@ -363,7 +363,7 @@ if (xkbi->flags&XkbMapPending) changes= xkbi->changes; - else bzero(&changes,sizeof(XkbChangesRec)); + else bzero(&changes,sizeof(changes)); XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK); LockDisplay(dpy); if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) { diff -N -x '*CVS*' -r -u x11r680/xc/lib/X11/XlibInt.c x11r682/xc/lib/X11/XlibInt.c --- xc/lib/X11/XlibInt.c 2004-04-23 20:43:24.000000000 +0200 +++ xc/lib/X11/XlibInt.c 2004-12-13 03:35:26.000000000 +0100 @@ -3346,7 +3346,7 @@ int flags; { char buf[MAX_PATH]; - char* bufp; + char* bufp = NULL; int ret = -1; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); @@ -3365,7 +3365,7 @@ _Xconst char* mode; { char buf[MAX_PATH]; - char* bufp; + char* bufp = NULL; void* ret = NULL; UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS); diff -N -x '*CVS*' -r -u x11r680/xc/lib/X11/imInsClbk.c x11r682/xc/lib/X11/imInsClbk.c --- xc/lib/X11/imInsClbk.c 2004-04-23 20:43:24.000000000 +0200 +++ xc/lib/X11/imInsClbk.c 2004-12-13 03:24:22.000000000 +0100 @@ -254,8 +254,6 @@ _XUnregisterFilter( display, RootWindow(display, 0), _XimFilterPropertyNotify, (XPointer)NULL ); - XSelectInput( display, RootWindow(display, 0), - NoEventMask ); } else picb->next = icb->next; diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/AsciiSink.c x11r682/xc/lib/Xaw/AsciiSink.c --- xc/lib/Xaw/AsciiSink.c 2004-04-23 20:43:37.000000000 +0200 +++ xc/lib/Xaw/AsciiSink.c 2004-12-13 03:49:55.000000000 +0100 @@ -1706,6 +1706,8 @@ GetGC(sink); + if (!sink->ascii_sink.font) XtError("Aborting: no font found\n"); + sink->ascii_sink.cursor_position = 0; sink->ascii_sink.laststate = XawisOff; sink->ascii_sink.cursor_x = sink->ascii_sink.cursor_y = 0; diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/Label.c x11r682/xc/lib/Xaw/Label.c --- xc/lib/Xaw/Label.c 2004-04-23 20:43:37.000000000 +0200 +++ xc/lib/Xaw/Label.c 2004-12-13 03:49:55.000000000 +0100 @@ -527,6 +527,8 @@ LabelWidget lw = (LabelWidget)cnew; if (!lw->label.font) XtError("Aborting: no font found\n"); + if (lw->simple.international && !lw->label.fontset) + XtError("Aborting: no fontset found\n"); if (lw->label.label == NULL) lw->label.label = XtNewString(lw->core.name); @@ -722,8 +724,8 @@ if (curlw->label.encoding != newlw->label.encoding) was_resized = True; - if (curlw->label.fontset != newlw->label.fontset && - curlw->simple.international) + if (curlw->simple.international + && curlw->label.fontset != newlw->label.fontset) was_resized = True; if (curlw->label.label != newlw->label.label) { diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/List.c x11r682/xc/lib/Xaw/List.c --- xc/lib/Xaw/List.c 2004-04-23 20:43:37.000000000 +0200 +++ xc/lib/Xaw/List.c 2004-12-13 03:49:55.000000000 +0100 @@ -471,6 +471,10 @@ { ListWidget lw = (ListWidget)cnew; + if (!lw->list.font) XtError("Aborting: no font found\n"); + if (lw->simple.international && !lw->list.fontset) + XtError("Aborting: no fontset found\n"); + /* * Initialize all private resources */ diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/MultiSink.c x11r682/xc/lib/Xaw/MultiSink.c --- xc/lib/Xaw/MultiSink.c 2004-04-23 20:43:37.000000000 +0200 +++ xc/lib/Xaw/MultiSink.c 2004-12-13 03:49:55.000000000 +0100 @@ -718,6 +718,8 @@ GetGC(sink); + if (!sink->multi_sink.fontset) XtError("Aborting: no fontset found\n"); + sink->multi_sink.cursor_position = 0; sink->multi_sink.laststate = XawisOff; sink->multi_sink.cursor_x = sink->multi_sink.cursor_y = 0; diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/SmeBSB.c x11r682/xc/lib/Xaw/SmeBSB.c --- xc/lib/Xaw/SmeBSB.c 2004-04-23 20:43:37.000000000 +0200 +++ xc/lib/Xaw/SmeBSB.c 2004-12-13 03:49:55.000000000 +0100 @@ -266,6 +266,8 @@ { SmeBSBObject entry = (SmeBSBObject)cnew; + if (!entry->sme_bsb.font) XtError("Aborting: no font found\n"); + if (entry->sme_bsb.label == NULL) entry->sme_bsb.label = XtName(cnew); else diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/Tip.c x11r682/xc/lib/Xaw/Tip.c --- xc/lib/Xaw/Tip.c 2004-04-23 20:43:38.000000000 +0200 +++ xc/lib/Xaw/Tip.c 2004-12-13 03:49:55.000000000 +0100 @@ -243,6 +243,10 @@ TipWidget tip = (TipWidget)w; XGCValues values; + if (!tip->tip.font) XtError("Aborting: no font found\n"); + if (tip->tip.international && !tip->tip.fontset) + XtError("Aborting: no fontset found\n"); + tip->tip.timer = 0; values.foreground = tip->tip.foreground; diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xaw/XawIm.c x11r682/xc/lib/Xaw/XawIm.c --- xc/lib/Xaw/XawIm.c 2004-04-23 20:43:38.000000000 +0200 +++ xc/lib/Xaw/XawIm.c 2004-12-13 03:49:55.000000000 +0100 @@ -808,8 +808,10 @@ pe_a[pe_cnt] = (XPointer) p->font_set; pe_cnt++; st_a[st_cnt] = (XPointer) XNFontSet; st_cnt++; st_a[st_cnt] = (XPointer) p->font_set; st_cnt++; - height = maxAscentOfFontSet(p->font_set) - + maxDescentOfFontSet(p->font_set); + if (p->font_set) { + height = maxAscentOfFontSet(p->font_set) + + maxDescentOfFontSet(p->font_set); + } height = SetVendorShellHeight(ve, height); } if (p->flg & CIFg) { @@ -938,7 +940,7 @@ XPointer ic_a[20], pe_a[20], st_a[20]; int ic_cnt = 0, pe_cnt = 0, st_cnt = 0; XawTextMargin *margin; - int height; + int height = 0; if ((ve->im.xim == NULL) || ((p = GetIcTableShared(w, ve)) == NULL) || (p->xic == NULL)) return; @@ -965,8 +967,10 @@ pe_a[pe_cnt] = (XPointer) p->font_set; pe_cnt++; st_a[st_cnt] = (XPointer) XNFontSet; st_cnt++; st_a[st_cnt] = (XPointer) p->font_set; st_cnt++; - height = maxAscentOfFontSet(p->font_set) - + maxDescentOfFontSet(p->font_set); + if (p->font_set) { + height = maxAscentOfFontSet(p->font_set) + + maxDescentOfFontSet(p->font_set); + } height = SetVendorShellHeight(ve, height); } if (p->flg & CIFg) { diff -N -x '*CVS*' -r -u x11r680/xc/lib/Xpm/Imakefile x11r682/xc/lib/Xpm/Imakefile --- xc/lib/Xpm/Imakefile 2004-04-23 20:43:46.000000000 +0200 +++ xc/lib/Xpm/Imakefile 2004-12-17 02:09:37.000000000 +0100 @@ -42,11 +42,24 @@ SPRINTFDEF = -DVOID_SPRINTF #endif +#if HasStrlcat +STRLCATDEF = -DHAS_STRLCAT +#endif + +#if HasSnprintf +SNPRINTFDEF = -DHAS_SNPRINTF +#else +SNPRINTFDEF = -Dsnprintf=_XpmSnprintf +SNPRINTFSRCS = snprintf.c +SNPRINTFOBJS = snprintf.o +#endif + #if defined(Win32Architecture) ZPIPEDEF = -DNO_ZPIPE #endif -DEFINES = $(STRDUPDEF) $(STRCASECMPDEF) $(SPRINTFDEF) $(ZPIPEDEF) $(ZFILEDEF) +DEFINES = $(STRDUPDEF) $(STRCASECMPDEF) $(SPRINTFDEF) $(STRLCATDEF) \ + $(SNPRINTFDEF) $(ZPIPEDEF) $(ZFILEDEF) HEADERS = xpm.h @@ -54,13 +67,15 @@ CrBufFrI.c CrDatFrP.c CrPFrBuf.c RdFToI.c WrFFrI.c \ CrBufFrP.c CrIFrBuf.c CrPFrDat.c RdFToP.c WrFFrP.c \ CrDatFrI.c CrIFrDat.c RdFToDat.c WrFFrDat.c \ - Attrib.c CrIFrP.c CrPFrI.c Image.c Info.c RdFToBuf.c WrFFrBuf.c + Attrib.c CrIFrP.c CrPFrI.c Image.c Info.c RdFToBuf.c WrFFrBuf.c \ + $(SNPRINTFSRCS) OBJS = data.o create.o misc.o rgb.o scan.o parse.o hashtab.o \ CrBufFrI.o CrDatFrP.o CrPFrBuf.o RdFToI.o WrFFrI.o \ CrBufFrP.o CrIFrBuf.o CrPFrDat.o RdFToP.o WrFFrP.o \ CrDatFrI.o CrIFrDat.o RdFToDat.o WrFFrDat.o \ - Attrib.o CrIFrP.o CrPFrI.o Image.o Info.o RdFToBuf.o WrFFrBuf.o + Attrib.o CrIFrP.o CrPFrI.o Image.o Info.o RdFToBuf.o WrFFrBuf.o \ + $(SNPRINTFOBJS) XPMDIR = $(TOP)/extras/Xpm XPMLIBDIR = $(TOP)/extras/Xpm/lib @@ -100,4 +115,8 @@ LinkSourceFile(WrFFrBuf.c,$(XPMLIBDIR)) LinkSourceFile(xpm.h,$(XPMLIBDIR)) +#if !HasSnprintf +LinkSourceFile(snprintf.c,$(LIBSRC)/misc) +#endif + DependTarget() diff -N -x '*CVS*' -r -u x11r680/xc/lib/dmx/dmx.c x11r682/xc/lib/dmx/dmx.c --- xc/lib/dmx/dmx.c 2004-06-30 22:06:53.000000000 +0200 +++ xc/lib/dmx/dmx.c 2004-12-13 02:08:30.000000000 +0100 @@ -424,7 +424,7 @@ if (length) { char *buffer = Xmalloc(paddedLength); memset(buffer, 0, paddedLength); - strcpy(buffer, displayName); + memcpy(buffer, displayName, length); Data32(dpy, buffer, paddedLength); Xfree(buffer); } @@ -730,7 +730,7 @@ if (length) { char *buffer = Xmalloc(paddedLength); memset(buffer, 0, paddedLength); - strcpy(buffer, attr->name); + memcpy(buffer, attr->name, paddedLength); Data32(dpy, buffer, paddedLength); Xfree(buffer); } diff -N -x '*CVS*' -r -u x11r680/xc/lib/font/util/Imakefile x11r682/xc/lib/font/util/Imakefile --- xc/lib/font/util/Imakefile 2004-08-27 21:27:11.000000000 +0200 +++ xc/lib/font/util/Imakefile 2005-01-25 02:17:54.000000000 +0100 @@ -19,15 +19,6 @@ it doesn't break anything. */ SYS_DEFINES = -D__XPG4_CHAR_CLASS__ #endif -#ifndef LynxOSArchitecture -/* See xc/lib/font/FreeType/Imakefile - if we build the internal version of - * FreeType we should not implement functions already defined by it - * (see http://pdx.freedesktop.org/cgi-bin/bugzilla/show_bug.cgi?id=513) - */ -#if !HasFreetype2 && !SharedLibFreetype2 -INTERNALDEFINES = -DUSE_INTERNAL_FREETYPE -#endif -#endif DEFINES = StrcasecmpDefines $(SYS_DEFINES) $(INTERNALDEFINES) diff -N -x '*CVS*' -r -u x11r680/xc/lib/font/util/utilbitmap.c x11r682/xc/lib/font/util/utilbitmap.c --- xc/lib/font/util/utilbitmap.c 2004-04-23 20:44:23.000000000 +0200 +++ xc/lib/font/util/utilbitmap.c 2005-01-25 02:17:54.000000000 +0100 @@ -27,8 +27,6 @@ */ /* $XFree86: xc/lib/font/util/utilbitmap.c,v 1.4 2001/01/17 19:43:34 dawes Exp $ */ -#ifndef USE_INTERNAL_FREETYPE - /* * Author: Keith Packard, MIT X Consortium */ @@ -184,5 +182,4 @@ return dstWidthBytes * height; } -#endif /* !USE_INTERNAL_FREETYPE */ diff -N -x '*CVS*' -r -u x11r680/xc/nls/Compose/Imakefile x11r682/xc/nls/Compose/Imakefile --- xc/nls/Compose/Imakefile 2004-04-23 20:44:33.000000000 +0200 +++ xc/nls/Compose/Imakefile 2005-01-25 03:03:01.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:48 cpqbld Exp $ -XCOMM $XdotOrg: xc/nls/Compose/Imakefile,v 1.2 2004/04/23 18:44:33 eich Exp $ +XCOMM $XdotOrg: xc/nls/Compose/Imakefile,v 1.2.4.1 2005/01/25 02:03:01 gisburn Exp $ @@ -56,6 +56,7 @@ ComposeTarget(koi8-u) ComposeTarget(koi8-c) ComposeTarget(mulelao-1) +ComposeTarget(pt_BR.UTF-8) ComposeTarget(vi_VN.tcvn) ComposeTarget(vi_VN.viscii) ComposeTarget(zh_CN) diff -N -x '*CVS*' -r -u x11r680/xc/nls/Compose/pt_BR.UTF-8 x11r682/xc/nls/Compose/pt_BR.UTF-8 --- xc/nls/Compose/pt_BR.UTF-8 1970-01-01 01:00:00.000000000 +0100 +++ xc/nls/Compose/pt_BR.UTF-8 2005-02-01 04:17:00.000000000 +0100 @@ -0,0 +1,5541 @@ +XCOMM UTF-8 (Unicode) compose sequence +XCOMM David.Monniaux@ens.fr +XCOMM +XCOMM Modified for Brazilian Portuguese by Gustavo Noronha Silva + +XCOMM Part 1 - Manual definitions + +XCOMM Spacing versions of dead accents + : "~" asciitilde + : "~" asciitilde + : "'" apostrophe + : "ÂŽ" acute + : "`" grave + : "`" grave + : "^" asciicircum + : "^" asciicircum + : "°" degree + : "°" degree + : "¯" macron + : "¯" macron + : "˘" breve + : "˘" breve + : "˙" abovedot + : "˙" abovedot + : "š" diaeresis + : "\"" quotedbl + : "˝" U2dd + : "˝" U2dd + : "ˇ" caron + : "ˇ" caron + : "ž" cedilla + : "ž" cedilla + : "˛" ogonek + : "˛" ogonek + : "ͺ" U37a + : "ͺ" U37a + +XCOMM ASCII characters that may be difficult to access +XCOMM on some keyboards. + : "#" numbersign + : "'" apostrophe + : "'" apostrophe + : "@" at + : "[" bracketleft + : "\\" backslash + : "\\" backslash + : "\\" backslash + : "]" bracketright + + : "^" asciicircum + : "^" asciicircum + : "^" asciicircum + : "^" asciicircum + + : "`" grave + : "`" grave + + : "{" braceleft + : "{" braceleft + + : "|" bar + : "|" bar + : "|" bar + : "|" bar + : "|" bar + : "|" bar + + : "}" braceright + : "}" braceright + + : "~" asciitilde + : "~" asciitilde + : "~" asciitilde + : "~" asciitilde + +XCOMM Spaces + : " " nobreakspace # NO-BREAK SPACE + : " " U2008 # PUNCTUATION SPACE + + : "©" copyright + : "©" copyright + : "©" copyright + : "©" copyright + + : "®" registered + : "®" registered + : "®" registered + : "®" registered + + : "›" U203a + : "‹" U2039 + : "·" U00B7 + : "Š" brokenbar + : "¡" exclamdown +

      : "¶" paragraph +

      : "¶" paragraph + : "±" plusminus + : "¿" questiondown + : "Ə" U018f + : "đ" dstroke + : "Đ" Dstroke + : "ß" ssharp + + : "œ" oe + : "Œ" OE + : "Ê" ae + : "Æ" AE + + : "°" degree # ^0 already taken + +XCOMM Quotation marks + : "〝" U301d # REVERSED DOUBLE PRIME QUOTATION MARK + : "〞" U301e # DOUBLE PRIME QUOTATION MARK + : "«" guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + : "»" guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + : "‘" U2018 # LEFT SINGLE QUOTATION MARK + : "‘" U2018 # LEFT SINGLE QUOTATION MARK + : "’" U2019 # RIGHT SINGLE QUOTATION MARK + : "’" U2019 # RIGHT SINGLE QUOTATION MARK + : "‚" U201a # SINGLE LOW-9 QUOTATION MARK + : "‚" U201a # SINGLE LOW-9 QUOTATION MARK + : "“" U201c # LEFT DOUBLE QUOTATION MARK + : "“" U201c # LEFT DOUBLE QUOTATION MARK + : "”" U201d # RIGHT DOUBLE QUOTATION MARK + : "”" U201d # RIGHT DOUBLE QUOTATION MARK + : "„" U201e # DOUBLE LOW-9 QUOTATION MARK + : "„" U201e # DOUBLE LOW-9 QUOTATION MARK + +XCOMM Per xxx + : "‰" U2030 # PER MILLE SIGN + +XCOMM Currencies + : "₠" U20a0 # EURO-CURRENCY SIGN + : "₡" U20a1 # COLON SIGN + : "₡" U20a1 # COLON SIGN + : "₢" U20a2 # CRUZEIRO SIGN + : "₣" U20a3 # FRENCH FRANC SIGN + : "â‚€" U20a4 # LIRA SIGN + : "â‚€" U20a4 # LIRA SIGN + : "₥" U20a5 # MILL SIGN + : "₥" U20a5 # MILL SIGN + : "₩" U20a6 # NAIRA SIGN + : "₩" U20a6 # NAIRA SIGN +

      : "₧" U20a7 # PESETA SIGN + : "₹" U20a8 # RUPEE SIGN + : "₩" U20a9 # WON SIGN + : "₩" U20a9 # WON SIGN +XCOMM "₪" U20aa NEW SHEQEL SIGN + : "₫" U20ab # DONG SIGN + : "€" EuroSign # EURO SIGN + : "€" EuroSign # EURO SIGN + : "€" EuroSign # EURO SIGN + : "€" EuroSign # EURO SIGN + + : "£" U00a3 # POUND SIGN + : "£" U00a3 # POUND SIGN + : "Â¥" yen + : "Â¥" yen + +XCOMM Long S + : "Å¿" U017f # LONG S + : "Å¿" U017f # LONG S + +XCOMM Dashes + : "–" U2013 # EN DASH + : "—" U2014 # EM DASH + +XCOMM Musical alterations + : "♭" U266d # MUSIC FLAT SIGN + : "♮" U266e # MUSIC NATURAL SIGN + : "♯" U266f # MUSIC SHARP SIGN + +XCOMM Other symbols + : "§" section # SECTION SIGN + : "§" section # SECTION SIGN + + : "€" currency + : "€" currency + +

      : "¶" paragraph # PILCROW SIGN (PARAGRAPH SIGN) + +XCOMM Part 2 + +XCOMM Compose map for Korean Hangul(Choseongul) Conjoining Jamos automatically +XCOMM generated from UnicodeData-2.0.14.txt at +XCOMM ftp://ftp.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt +XCOMM by Jungshik Shin 2002-10-17 +XCOMM There are some conflicts among sequences, but I left them alone. +XCOMM +XCOMM group 1: cluster jamos made of three basic jamos + + : "ᄢ" U1122 : ᄇᅠ ᄉᅠ ᄀᅠ = ᄢᅠ + : "ᄣ" U1123 : ᄇᅠ ᄉᅠ ᄃᅠ = ᄣᅠ + : "á„€" U1124 : ᄇᅠ ᄉᅠ ᄇᅠ = ᄀᅠ + : "ᄥ" U1125 : ᄇᅠ ᄉᅠ ᄉᅠ = ᄥᅠ + : "ᄩ" U1126 : ᄇᅠ ᄉᅠ ᄌᅠ = ᄩᅠ + : "ᄬ" U112c : ᄇᅠ ᄇᅠ ᄋᅠ = ᄬᅠ + : "ᄳ" U1133 : ᄉᅠ ᄇᅠ ᄀᅠ = ᄳᅠ + : "ᄮ" U1134 : ᄉᅠ ᄉᅠ ᄉᅠ = ᄮᅠ + : "ᅫ" U116b : ᅟᅩ ᅟᅡ ᅟᅵ = ᅟᅫ + : "ᅰ" U1170 : ᅟᅮ ᅟᅥ ᅟᅵ = ᅟᅰ + : "ᆋ" U118b : ᅟᅮ ᅟᅥ ᅟᅳ = ᅟᆋ + : "ᇄ" U11c4 : ᅟᅠᆹ ᅟᅠᆺ ᅟᅠᆹ = ᅟᅠᇄ + : "ᇌ" U11cc : ᅟᅠᆯ ᅟᅠᆹ ᅟᅠᆺ = ᅟᅠᇌ + : "ᇏ" U11cf : ᅟᅠᆯ ᅟᅠᆮ ᅟᅠᇂ = ᅟᅠᇏ + : "ᇑ" U11d1 : ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆹ = ᅟᅠᇑ + : "ᇒ" U11d2 : ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆺ = ᅟᅠᇒ + : "ᇓ" U11d3 : ᅟᅠᆯ ᅟᅠᆾ ᅟᅠᆺ = ᅟᅠᇓ + : "ᇔ" U11d4 : ᅟᅠᆯ ᅟᅠᆾ ᅟᅠᇂ = ᅟᅠᇔ + : "ᇕ" U11d5 : ᅟᅠᆯ ᅟᅠᆾ ᅟᅠᆌ = ᅟᅠᇕ + : "ᇖ" U11d6 : ᅟᅠᆯ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇖ + : "ᇞ" U11de : ᅟᅠᆷ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇞ + : "ᇭ" U11ed : ᅟᅠᆌ ᅟᅠᆹ ᅟᅠᆹ = ᅟᅠᇭ + : "ᄁ" U1101 : ᄀᅠ ᄀᅠ = ᄁᅠ + : "ᄄ" U1104 : ᄃᅠ ᄃᅠ = ᄄᅠ + : "ᄈ" U1108 : ᄇᅠ ᄇᅠ = ᄈᅠ + : "ᄊ" U110a : ᄉᅠ ᄉᅠ = ᄊᅠ + : "ᄍ" U110d : ᄌᅠ ᄌᅠ = ᄍᅠ + : "ᄓ" U1113 : ᄂᅠ ᄀᅠ = ᄓᅠ + : "ᄔ" U1114 : ᄂᅠ ᄂᅠ = ᄔᅠ + : "ᄕ" U1115 : ᄂᅠ ᄃᅠ = ᄕᅠ + : "ᄖ" U1116 : ᄂᅠ ᄇᅠ = ᄖᅠ + : "ᄗ" U1117 : ᄃᅠ ᄀᅠ = ᄗᅠ + : "ᄘ" U1118 : ᄅᅠ ᄂᅠ = ᄘᅠ + : "ᄙ" U1119 : ᄅᅠ ᄅᅠ = ᄙᅠ + : "ᄚ" U111a : ᄅᅠ ᄒᅠ = ᄚᅠ + : "ᄛ" U111b : ᄅᅠ ᄋᅠ = ᄛᅠ + : "ᄜ" U111c : ᄆᅠ ᄇᅠ = ᄜᅠ + : "ᄝ" U111d : ᄆᅠ ᄋᅠ = ᄝᅠ + : "ᄞ" U111e : ᄇᅠ ᄀᅠ = ᄞᅠ + : "ᄟ" U111f : ᄇᅠ ᄂᅠ = ᄟᅠ + : "ᄠ" U1120 : ᄇᅠ ᄃᅠ = ᄠᅠ + : "ᄡ" U1121 : ᄇᅠ ᄉᅠ = ᄡᅠ + : "ᄧ" U1127 : ᄇᅠ ᄌᅠ = ᄧᅠ + : "ᄹ" U1128 : ᄇᅠ ᄎᅠ = ᄹᅠ + : "ᄩ" U1129 : ᄇᅠ ᄐᅠ = ᄩᅠ + : "ᄪ" U112a : ᄇᅠ ᄑᅠ = ᄪᅠ + : "ᄫ" U112b : ᄇᅠ ᄋᅠ = ᄫᅠ + : "ᄭ" U112d : ᄉᅠ ᄀᅠ = ᄭᅠ + : "ᄮ" U112e : ᄉᅠ ᄂᅠ = ᄮᅠ + : "ᄯ" U112f : ᄉᅠ ᄃᅠ = ᄯᅠ + : "ᄰ" U1130 : ᄉᅠ ᄅᅠ = ᄰᅠ + : "ᄱ" U1131 : ᄉᅠ ᄆᅠ = ᄱᅠ + : "ᄲ" U1132 : ᄉᅠ ᄇᅠ = ᄲᅠ + : "ᄵ" U1135 : ᄉᅠ ᄋᅠ = ᄵᅠ + : "ᄶ" U1136 : ᄉᅠ ᄌᅠ = ᄶᅠ + : "ᄷ" U1137 : ᄉᅠ ᄎᅠ = ᄷᅠ + : "ᄾ" U1138 : ᄉᅠ ᄏᅠ = ᄾᅠ + : "ᄹ" U1139 : ᄉᅠ ᄐᅠ = ᄹᅠ + : "ᄺ" U113a : ᄉᅠ ᄑᅠ = ᄺᅠ + : "ᄻ" U113b : ᄉᅠ ᄒᅠ = ᄻᅠ + : "á„œ" U113d : ᄌᅠ ᄌᅠ = ᄜᅠ + : "ᄿ" U113f : á„Ÿá…  á„Ÿá…  = ᄿᅠ + : "ᅁ" U1141 : ᄋᅠ ᄀᅠ = ᅁᅠ + : "ᅂ" U1142 : ᄋᅠ ᄃᅠ = ᅂᅠ + : "ᅃ" U1143 : ᄋᅠ ᄆᅠ = ᅃᅠ + : "ᅄ" U1144 : ᄋᅠ ᄇᅠ = ᅄᅠ + : "ᅅ" U1145 : ᄋᅠ ᄉᅠ = ᅅᅠ + : "ᅆ" U1146 : ᄋᅠ ᅀᅠ = ᅆᅠ + : "ᅇ" U1147 : ᄋᅠ ᄋᅠ = ᅇᅠ + : "ᅈ" U1148 : ᄋᅠ ᄌᅠ = ᅈᅠ + : "ᅉ" U1149 : ᄋᅠ ᄎᅠ = ᅉᅠ + : "ᅊ" U114a : ᄋᅠ ᄐᅠ = ᅊᅠ + : "ᅋ" U114b : ᄋᅠ ᄑᅠ = ᅋᅠ + : "ᅍ" U114d : ᄌᅠ ᄋᅠ = ᅍᅠ + : "ᅏ" U114f : ᅎᅠ ᅎᅠ = ᅏᅠ + : "ᅑ" U1151 : ᅐᅠ ᅐᅠ = ᅑᅠ + : "ᅒ" U1152 : ᄎᅠ ᄏᅠ = ᅒᅠ + : "ᅓ" U1153 : ᄎᅠ ᄒᅠ = ᅓᅠ + : "ᅖ" U1156 : ᄑᅠ ᄇᅠ = ᅖᅠ + : "ᅗ" U1157 : ᄑᅠ ᄋᅠ = ᅗᅠ + : "ᅘ" U1158 : ᄒᅠ ᄒᅠ = ᅘᅠ + : "ᅢ" U1162 : ᅟᅡ ᅟᅵ = ᅟᅢ + : "á…€" U1164 : ᅟᅣ ᅟᅵ = á…Ÿá…€ + : "ᅩ" U1166 : ᅟᅥ ᅟᅵ = ᅟᅩ + : "ᅹ" U1168 : ᅟᅧ ᅟᅵ = ᅟᅹ + : "ᅪ" U116a : ᅟᅩ ᅟᅡ = ᅟᅪ + : "ᅬ" U116c : ᅟᅩ ᅟᅵ = ᅟᅬ + : "ᅯ" U116f : ᅟᅮ ᅟᅥ = ᅟᅯ + : "ᅱ" U1171 : ᅟᅮ ᅟᅵ = ᅟᅱ + : "ᅮ" U1174 : ᅟᅳ ᅟᅵ = ᅟᅮ + : "ᅶ" U1176 : ᅟᅡ ᅟᅩ = ᅟᅶ + : "ᅷ" U1177 : ᅟᅡ ᅟᅮ = ᅟᅷ + : "ᅾ" U1178 : ᅟᅣ ᅟᅩ = ᅟᅾ + : "ᅹ" U1179 : ᅟᅣ ᅟᅭ = ᅟᅹ + : "ᅺ" U117a : ᅟᅥ ᅟᅩ = ᅟᅺ + : "ᅻ" U117b : ᅟᅥ ᅟᅮ = ᅟᅻ + : "á…Œ" U117c : ᅟᅥ ᅟᅳ = á…Ÿá…Œ + : "á…œ" U117d : ᅟᅧ ᅟᅩ = á…Ÿá…œ + : "á…Ÿ" U117e : ᅟᅧ ᅟᅮ = á…Ÿá…Ÿ + : "ᅿ" U117f : ᅟᅩ ᅟᅥ = ᅟᅿ + : "ᆀ" U1180 : ᅟᅩ ᅟᅩ = ᅟᆀ + : "ᆁ" U1181 : ᅟᅩ ᅟᅹ = ᅟᆁ + : "ᆂ" U1182 : ᅟᅩ ᅟᅩ = ᅟᆂ + : "ᆃ" U1183 : ᅟᅩ ᅟᅮ = ᅟᆃ + : "ᆄ" U1184 : ᅟᅭ ᅟᅣ = ᅟᆄ + : "ᆅ" U1185 : ᅟᅭ á…Ÿá…€ = ᅟᆅ + : "ᆆ" U1186 : ᅟᅭ ᅟᅧ = ᅟᆆ + : "ᆇ" U1187 : ᅟᅭ ᅟᅩ = ᅟᆇ + : "ᆈ" U1188 : ᅟᅭ ᅟᅵ = ᅟᆈ + : "ᆉ" U1189 : ᅟᅮ ᅟᅡ = ᅟᆉ + : "ᆊ" U118a : ᅟᅮ ᅟᅢ = ᅟᆊ + : "ᆌ" U118c : ᅟᅮ ᅟᅹ = ᅟᆌ + : "ᆍ" U118d : ᅟᅮ ᅟᅮ = ᅟᆍ + : "ᆎ" U118e : ᅟᅲ ᅟᅡ = ᅟᆎ + : "ᆏ" U118f : ᅟᅲ ᅟᅥ = ᅟᆏ + : "ᆐ" U1190 : ᅟᅲ ᅟᅩ = ᅟᆐ + : "ᆑ" U1191 : ᅟᅲ ᅟᅧ = ᅟᆑ + : "ᆒ" U1192 : ᅟᅲ ᅟᅹ = ᅟᆒ + : "ᆓ" U1193 : ᅟᅲ ᅟᅮ = ᅟᆓ + : "ᆔ" U1194 : ᅟᅲ ᅟᅵ = ᅟᆔ + : "ᆕ" U1195 : ᅟᅳ ᅟᅮ = ᅟᆕ + : "ᆖ" U1196 : ᅟᅳ ᅟᅳ = ᅟᆖ + : "ᆗ" U1197 : ᅟᅮ ᅟᅮ = ᅟᆗ + : "ᆘ" U1198 : ᅟᅵ ᅟᅡ = ᅟᆘ + : "ᆙ" U1199 : ᅟᅵ ᅟᅣ = ᅟᆙ + : "ᆚ" U119a : ᅟᅵ ᅟᅩ = ᅟᆚ + : "ᆛ" U119b : ᅟᅵ ᅟᅮ = ᅟᆛ + : "ᆜ" U119c : ᅟᅵ ᅟᅳ = ᅟᆜ + : "ᆝ" U119d : ᅟᅵ ᅟᆞ = ᅟᆝ + : "ᆟ" U119f : ᅟᆞ ᅟᅥ = ᅟᆟ + : "ᆠ" U11a0 : ᅟᆞ ᅟᅮ = ᅟᆠ + : "ᆡ" U11a1 : ᅟᆞ ᅟᅵ = ᅟᆡ + : "ᆢ" U11a2 : ᅟᆞ ᅟᆞ = ᅟᆢ + : "ᆩ" U11a9 : ᅟᅠᆹ ᅟᅠᆹ = ᅟᅠᆩ + : "ᆪ" U11aa : ᅟᅠᆹ ᅟᅠᆺ = ᅟᅠᆪ + : "ᆬ" U11ac : ᅟᅠᆫ ᅟᅠᆜ = ᅟᅠᆬ + : "ᆭ" U11ad : ᅟᅠᆫ ᅟᅠᇂ = ᅟᅠᆭ + : "ᆰ" U11b0 : ᅟᅠᆯ ᅟᅠᆹ = ᅟᅠᆰ + : "ᆱ" U11b1 : ᅟᅠᆯ ᅟᅠᆷ = ᅟᅠᆱ + : "ᆲ" U11b2 : ᅟᅠᆯ ᅟᅠᆾ = ᅟᅠᆲ + : "ᆳ" U11b3 : ᅟᅠᆯ ᅟᅠᆺ = ᅟᅠᆳ + : "ᆮ" U11b4 : ᅟᅠᆯ ᅟᅠᇀ = ᅟᅠᆮ + : "ᆵ" U11b5 : ᅟᅠᆯ ᅟᅠᇁ = ᅟᅠᆵ + : "ᆶ" U11b6 : ᅟᅠᆯ ᅟᅠᇂ = ᅟᅠᆶ + : "ᆹ" U11b9 : ᅟᅠᆾ ᅟᅠᆺ = ᅟᅠᆹ + : "ᆻ" U11bb : ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᆻ + : "ᇃ" U11c3 : ᅟᅠᆹ ᅟᅠᆯ = ᅟᅠᇃ + : "ᇅ" U11c5 : ᅟᅠᆫ ᅟᅠᆹ = ᅟᅠᇅ + : "ᇆ" U11c6 : ᅟᅠᆫ ᅟᅠᆮ = ᅟᅠᇆ + : "ᇇ" U11c7 : ᅟᅠᆫ ᅟᅠᆺ = ᅟᅠᇇ + : "ᇈ" U11c8 : ᅟᅠᆫ ᅟᅠᇫ = ᅟᅠᇈ + : "ᇉ" U11c9 : ᅟᅠᆫ ᅟᅠᇀ = ᅟᅠᇉ + : "ᇊ" U11ca : ᅟᅠᆮ ᅟᅠᆹ = ᅟᅠᇊ + : "ᇋ" U11cb : ᅟᅠᆮ ᅟᅠᆯ = ᅟᅠᇋ + : "ᇍ" U11cd : ᅟᅠᆯ ᅟᅠᆫ = ᅟᅠᇍ + : "ᇎ" U11ce : ᅟᅠᆯ ᅟᅠᆮ = ᅟᅠᇎ + : "ᇐ" U11d0 : ᅟᅠᆯ ᅟᅠᆯ = ᅟᅠᇐ + : "ᇗ" U11d7 : ᅟᅠᆯ ᅟᅠᇫ = ᅟᅠᇗ + : "ᇘ" U11d8 : ᅟᅠᆯ ᅟᅠᆿ = ᅟᅠᇘ + : "ᇙ" U11d9 : ᅟᅠᆯ ᅟᅠᇹ = ᅟᅠᇙ + : "ᇚ" U11da : ᅟᅠᆷ ᅟᅠᆹ = ᅟᅠᇚ + : "ᇛ" U11db : ᅟᅠᆷ ᅟᅠᆯ = ᅟᅠᇛ + : "ᇜ" U11dc : ᅟᅠᆷ ᅟᅠᆾ = ᅟᅠᇜ + : "ᇝ" U11dd : ᅟᅠᆷ ᅟᅠᆺ = ᅟᅠᇝ + : "ᇟ" U11df : ᅟᅠᆷ ᅟᅠᇫ = ᅟᅠᇟ + : "ᇠ" U11e0 : ᅟᅠᆷ ᅟᅠᆟ = ᅟᅠᇠ + : "ᇡ" U11e1 : ᅟᅠᆷ ᅟᅠᇂ = ᅟᅠᇡ + : "ᇢ" U11e2 : ᅟᅠᆷ ᅟᅠᆌ = ᅟᅠᇢ + : "ᇣ" U11e3 : ᅟᅠᆾ ᅟᅠᆯ = ᅟᅠᇣ + : "ᇀ" U11e4 : ᅟᅠᆾ ᅟᅠᇁ = ᅟᅠᇀ + : "ᇥ" U11e5 : ᅟᅠᆾ ᅟᅠᇂ = ᅟᅠᇥ + : "ᇩ" U11e6 : ᅟᅠᆾ ᅟᅠᆌ = ᅟᅠᇩ + : "ᇧ" U11e7 : ᅟᅠᆺ ᅟᅠᆹ = ᅟᅠᇧ + : "ᇹ" U11e8 : ᅟᅠᆺ ᅟᅠᆮ = ᅟᅠᇹ + : "ᇩ" U11e9 : ᅟᅠᆺ ᅟᅠᆯ = ᅟᅠᇩ + : "ᇪ" U11ea : ᅟᅠᆺ ᅟᅠᆾ = ᅟᅠᇪ + : "ᇬ" U11ec : ᅟᅠᆌ ᅟᅠᆹ = ᅟᅠᇬ + : "ᇮ" U11ee : ᅟᅠᆌ ᅟᅠᆌ = ᅟᅠᇮ + : "ᇯ" U11ef : ᅟᅠᆌ ᅟᅠᆿ = ᅟᅠᇯ + : "ᇱ" U11f1 : ᅟᅠᇰ ᅟᅠᆺ = ᅟᅠᇱ + : "ᇲ" U11f2 : ᅟᅠᇰ ᅟᅠᇫ = ᅟᅠᇲ + : "ᇳ" U11f3 : ᅟᅠᇁ ᅟᅠᆾ = ᅟᅠᇳ + : "ᇮ" U11f4 : ᅟᅠᇁ ᅟᅠᆌ = ᅟᅠᇮ + : "ᇵ" U11f5 : ᅟᅠᇂ ᅟᅠᆫ = ᅟᅠᇵ + : "ᇶ" U11f6 : ᅟᅠᇂ ᅟᅠᆯ = ᅟᅠᇶ + : "ᇷ" U11f7 : ᅟᅠᇂ ᅟᅠᆷ = ᅟᅠᇷ + : "ᇾ" U11f8 : ᅟᅠᇂ ᅟᅠᆾ = ᅟᅠᇾ + : "ᄢ" U1122 : ᄡᅠ ᄀᅠ = ᄢᅠ + : "ᄣ" U1123 : ᄡᅠ ᄃᅠ = ᄣᅠ + : "á„€" U1124 : ᄡᅠ ᄇᅠ = ᄀᅠ + : "ᄥ" U1125 : ᄡᅠ ᄉᅠ = ᄥᅠ + : "ᄩ" U1126 : ᄡᅠ ᄌᅠ = ᄩᅠ + : "ᄬ" U112c : ᄈᅠ ᄋᅠ = ᄬᅠ + : "ᄳ" U1133 : ᄲᅠ ᄀᅠ = ᄳᅠ + : "ᄮ" U1134 : ᄊᅠ ᄉᅠ = ᄮᅠ + : "ᅫ" U116b : ᅟᅪ ᅟᅵ = ᅟᅫ + : "ᅰ" U1170 : ᅟᅯ ᅟᅵ = ᅟᅰ + : "ᆋ" U118b : ᅟᅯ ᅟᅳ = ᅟᆋ + : "ᇄ" U11c4 : ᅟᅠᆪ ᅟᅠᆹ = ᅟᅠᇄ + : "ᇌ" U11cc : ᅟᅠᆰ ᅟᅠᆺ = ᅟᅠᇌ + : "ᇏ" U11cf : ᅟᅠᇎ ᅟᅠᇂ = ᅟᅠᇏ + : "ᇑ" U11d1 : ᅟᅠᆱ ᅟᅠᆹ = ᅟᅠᇑ + : "ᇒ" U11d2 : ᅟᅠᆱ ᅟᅠᆺ = ᅟᅠᇒ + : "ᇓ" U11d3 : ᅟᅠᆲ ᅟᅠᆺ = ᅟᅠᇓ + : "ᇔ" U11d4 : ᅟᅠᆲ ᅟᅠᇂ = ᅟᅠᇔ + : "ᇕ" U11d5 : ᅟᅠᆲ ᅟᅠᆌ = ᅟᅠᇕ + : "ᇖ" U11d6 : ᅟᅠᆳ ᅟᅠᆺ = ᅟᅠᇖ + : "ᇞ" U11de : ᅟᅠᇝ ᅟᅠᆺ = ᅟᅠᇞ + : "ᇭ" U11ed : ᅟᅠᇬ ᅟᅠᆹ = ᅟᅠᇭ + : "ᄢ" U1122 : ᄇᅠ ᄭᅠ = ᄢᅠ + : "ᄣ" U1123 : ᄇᅠ ᄯᅠ = ᄣᅠ + : "á„€" U1124 : ᄇᅠ ᄲᅠ = ᄀᅠ + : "ᄥ" U1125 : ᄇᅠ ᄊᅠ = ᄥᅠ + : "ᄩ" U1126 : ᄇᅠ ᄶᅠ = ᄩᅠ + : "ᄬ" U112c : ᄇᅠ ᄫᅠ = ᄬᅠ + : "ᄳ" U1133 : ᄉᅠ ᄞᅠ = ᄳᅠ + : "ᄮ" U1134 : ᄉᅠ ᄊᅠ = ᄮᅠ + : "ᅫ" U116b : ᅟᅩ ᅟᅢ = ᅟᅫ + : "ᅰ" U1170 : ᅟᅮ ᅟᅩ = ᅟᅰ + : "ᆋ" U118b : ᅟᅮ á…Ÿá…Œ = ᅟᆋ + : "ᇄ" U11c4 : ᅟᅠᆹ ᅟᅠᇧ = ᅟᅠᇄ + : "ᇌ" U11cc : ᅟᅠᆯ ᅟᅠᆪ = ᅟᅠᇌ + : "ᇑ" U11d1 : ᅟᅠᆯ ᅟᅠᇚ = ᅟᅠᇑ + : "ᇒ" U11d2 : ᅟᅠᆯ ᅟᅠᇝ = ᅟᅠᇒ + : "ᇓ" U11d3 : ᅟᅠᆯ ᅟᅠᆹ = ᅟᅠᇓ + : "ᇔ" U11d4 : ᅟᅠᆯ ᅟᅠᇥ = ᅟᅠᇔ + : "ᇕ" U11d5 : ᅟᅠᆯ ᅟᅠᇩ = ᅟᅠᇕ + : "ᇖ" U11d6 : ᅟᅠᆯ ᅟᅠᆻ = ᅟᅠᇖ + : "ᇞ" U11de : ᅟᅠᆷ ᅟᅠᆻ = ᅟᅠᇞ + : "ᇭ" U11ed : ᅟᅠᆌ ᅟᅠᆩ = ᅟᅠᇭ + + : "ª" U00AA # FEMININE ORDINAL INDICATOR + : "ª" U00AA # FEMININE ORDINAL INDICATOR + : "ª" U00AA # FEMININE ORDINAL INDICATOR + : "ª" U00AA # FEMININE ORDINAL INDICATOR + <2> : "²" U00B2 # SUPERSCRIPT TWO + <2> : "²" U00B2 # SUPERSCRIPT TWO + : "²" U00B2 # SUPERSCRIPT TWO + : "²" U00B2 # SUPERSCRIPT TWO + : "²" U00B2 # SUPERSCRIPT TWO + : "²" U00B2 # SUPERSCRIPT TWO + <3> : "³" U00B3 # SUPERSCRIPT THREE + <3> : "³" U00B3 # SUPERSCRIPT THREE + : "³" U00B3 # SUPERSCRIPT THREE + : "³" U00B3 # SUPERSCRIPT THREE + <1> : "¹" U00B9 # SUPERSCRIPT ONE + <1> : "¹" U00B9 # SUPERSCRIPT ONE + : "¹" U00B9 # SUPERSCRIPT ONE + : "¹" U00B9 # SUPERSCRIPT ONE + : "º" U00BA # MASCULINE ORDINAL INDICATOR + : "º" U00BA # MASCULINE ORDINAL INDICATOR + : "º" U00BA # MASCULINE ORDINAL INDICATOR + : "º" U00BA # MASCULINE ORDINAL INDICATOR + : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE + : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE + : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE + : "Á" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE + : "Á" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE + : "Á" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE + : "Á" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE + : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX + : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX + : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE + : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE + : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE + : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS + : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS + : "Å" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE + : "Å" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE + : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA + : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA + : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE + : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE + : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE + : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE + : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE + : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE + : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE + : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX + : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX + : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS + : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS + : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE + : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE + : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE + : "Í" U00CD # LATIN CAPITAL LETTER I WITH ACUTE + : "Í" U00CD # LATIN CAPITAL LETTER I WITH ACUTE + : "Í" U00CD # LATIN CAPITAL LETTER I WITH ACUTE + : "Í" U00CD # LATIN CAPITAL LETTER I WITH ACUTE + : "Î" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX + : "Î" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX + : "Ï" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS + : "Ï" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS + : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE + : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE + : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE + : "Ò" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE + : "Ò" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE + : "Ò" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE + : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE + : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE + : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE + : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE + : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX + : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX + : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE + : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE + : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE + : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS + : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS + : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE + : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE + : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE + : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE + : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE + : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE + : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE + : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE + : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE + : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX + : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX + : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS + : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS + : "Ý" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE + : "Ý" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE + : "Ý" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE + : "Ý" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE + : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE + : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE + : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE + : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE + : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE + : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE + : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE + : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX + : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX + : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE + : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE + : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE + : "À" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS + : "À" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS + : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE + : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE + : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA + : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA + : "Ú" U00E8 # LATIN SMALL LETTER E WITH GRAVE + : "Ú" U00E8 # LATIN SMALL LETTER E WITH GRAVE + : "Ú" U00E8 # LATIN SMALL LETTER E WITH GRAVE + : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE + : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE + : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE + : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE + : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX + : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX + : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS + : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS + : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE + : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE + : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE + : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE + : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE + : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE + : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE + : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX + : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX + : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS + : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS + : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE + : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE + : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE + : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE + : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE + : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE + : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE + : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE + : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE + : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE + : "ÃŽ" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX + : "ÃŽ" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX + : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE + : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE + : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE + : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS + : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS + : "Þ" U00F8 # LATIN SMALL LETTER O WITH STROKE + : "Þ" U00F8 # LATIN SMALL LETTER O WITH STROKE + : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE + : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE + : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE + : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE + : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE + : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE + : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE + : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX + : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX + : "ÃŒ" U00FC # LATIN SMALL LETTER U WITH DIAERESIS + : "ÃŒ" U00FC # LATIN SMALL LETTER U WITH DIAERESIS + : "Ãœ" U00FD # LATIN SMALL LETTER Y WITH ACUTE + : "Ãœ" U00FD # LATIN SMALL LETTER Y WITH ACUTE + : "Ãœ" U00FD # LATIN SMALL LETTER Y WITH ACUTE + : "Ãœ" U00FD # LATIN SMALL LETTER Y WITH ACUTE + : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS + : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS + : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON + : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON + : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON + : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON + : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON + : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON + : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE + : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE + : "Ă" U0102 # LATIN CAPITAL LETTER A WITH BREVE + : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE + : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE + : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE + : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK + : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK + : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK + : "ą" U0105 # LATIN SMALL LETTER A WITH OGONEK + : "Ç" U0106 # LATIN CAPITAL LETTER C WITH ACUTE + : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE + : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE + : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE + : "ç" U0107 # LATIN SMALL LETTER C WITH ACUTE + : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE + : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE + : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE + : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX + : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX + : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX + : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX + : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE + : "Ċ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE + : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE + : "ċ" U010B # LATIN SMALL LETTER C WITH DOT ABOVE + : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON + : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON + : "č" U010D # LATIN SMALL LETTER C WITH CARON + : "č" U010D # LATIN SMALL LETTER C WITH CARON + : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON + : "Ď" U010E # LATIN CAPITAL LETTER D WITH CARON + : "ď" U010F # LATIN SMALL LETTER D WITH CARON + : "ď" U010F # LATIN SMALL LETTER D WITH CARON + : "Đ" U0110 # LATIN CAPITAL LETTER D WITH STROKE + : "Đ" U0110 # LATIN CAPITAL LETTER D WITH STROKE + : "đ" U0111 # LATIN SMALL LETTER D WITH STROKE + : "đ" U0111 # LATIN SMALL LETTER D WITH STROKE + : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON + : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON + : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON + : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON + : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON + : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON + : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE + : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE + : "Ĕ" U0114 # LATIN CAPITAL LETTER E WITH BREVE + : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE + : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE + : "ĕ" U0115 # LATIN SMALL LETTER E WITH BREVE + : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE + : "Ė" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE + : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE + : "ė" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE + : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK + : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK + : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK + : "ę" U0119 # LATIN SMALL LETTER E WITH OGONEK + : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON + : "Ě" U011A # LATIN CAPITAL LETTER E WITH CARON + : "ě" U011B # LATIN SMALL LETTER E WITH CARON + : "ě" U011B # LATIN SMALL LETTER E WITH CARON + : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX + : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX + : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX + : "ĝ" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX + : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE + : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE + : "Ğ" U011E # LATIN CAPITAL LETTER G WITH BREVE + : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE + : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE + : "ğ" U011F # LATIN SMALL LETTER G WITH BREVE + : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE + : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE + : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE + : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE + : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA + : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA + : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA + : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA + : "Ä€" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX + : "Ä€" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX + : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX + : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX + : "ÄŠ" U0126 # LATIN CAPITAL LETTER H WITH STROKE + : "ÄŠ" U0126 # LATIN CAPITAL LETTER H WITH STROKE + : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE + : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE + : "Äš" U0128 # LATIN CAPITAL LETTER I WITH TILDE + : "Äš" U0128 # LATIN CAPITAL LETTER I WITH TILDE + : "Äš" U0128 # LATIN CAPITAL LETTER I WITH TILDE + : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE + : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE + : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE + : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON + : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON + : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON + : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON + : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON + : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON + : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE + : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE + : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE + : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE + : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE + : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE + : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK + : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK + : "į" U012F # LATIN SMALL LETTER I WITH OGONEK + : "į" U012F # LATIN SMALL LETTER I WITH OGONEK + : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE + : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE + : "ÄŽ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX + : "ÄŽ" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX + : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX + : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX + : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA + : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA + : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA + : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA + : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE + : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE + : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE + : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE + : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE + : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE + : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE + : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE + : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA + : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA + : "ÄŒ" U013C # LATIN SMALL LETTER L WITH CEDILLA + : "ÄŒ" U013C # LATIN SMALL LETTER L WITH CEDILLA + : "Äœ" U013D # LATIN CAPITAL LETTER L WITH CARON + : "Äœ" U013D # LATIN CAPITAL LETTER L WITH CARON + : "ÄŸ" U013E # LATIN SMALL LETTER L WITH CARON + : "ÄŸ" U013E # LATIN SMALL LETTER L WITH CARON + : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE + : "Ł" U0141 # LATIN CAPITAL LETTER L WITH STROKE + : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE + : "ł" U0142 # LATIN SMALL LETTER L WITH STROKE + : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE + : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE + : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE + : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE + : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE + : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE + : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE + : "ń" U0144 # LATIN SMALL LETTER N WITH ACUTE + : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA + : "Ņ" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA + : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA + : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA + : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON + : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON + : "ň" U0148 # LATIN SMALL LETTER N WITH CARON + : "ň" U0148 # LATIN SMALL LETTER N WITH CARON + : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON + : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON + : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON + : "ō" U014D # LATIN SMALL LETTER O WITH MACRON + : "ō" U014D # LATIN SMALL LETTER O WITH MACRON + : "ō" U014D # LATIN SMALL LETTER O WITH MACRON + : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE + : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE + : "Ŏ" U014E # LATIN CAPITAL LETTER O WITH BREVE + : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE + : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE + : "ŏ" U014F # LATIN SMALL LETTER O WITH BREVE + : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + : "Ő" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE + : "ő" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE + : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE + : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE + : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE + : "Ŕ" U0154 # LATIN CAPITAL LETTER R WITH ACUTE + : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE + : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE + : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE + : "ŕ" U0155 # LATIN SMALL LETTER R WITH ACUTE + : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA + : "Ŗ" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA + : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA + : "ŗ" U0157 # LATIN SMALL LETTER R WITH CEDILLA + : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON + : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON + : "ř" U0159 # LATIN SMALL LETTER R WITH CARON + : "ř" U0159 # LATIN SMALL LETTER R WITH CARON + : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE + : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE + : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE + : "Ś" U015A # LATIN CAPITAL LETTER S WITH ACUTE + : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE + : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE + : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE + : "ś" U015B # LATIN SMALL LETTER S WITH ACUTE + : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX + : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX + : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX + : "ŝ" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX + : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA + : "Ş" U015E # LATIN CAPITAL LETTER S WITH CEDILLA + : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA + : "ş" U015F # LATIN SMALL LETTER S WITH CEDILLA + : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON + : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON + : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON + : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON + : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA + : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA + : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA + : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA + : "Å€" U0164 # LATIN CAPITAL LETTER T WITH CARON + : "Å€" U0164 # LATIN CAPITAL LETTER T WITH CARON + : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON + : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON + : "ÅŠ" U0166 # LATIN CAPITAL LETTER T WITH STROKE + : "ÅŠ" U0166 # LATIN CAPITAL LETTER T WITH STROKE + : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE + : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE + : "Åš" U0168 # LATIN CAPITAL LETTER U WITH TILDE + : "Åš" U0168 # LATIN CAPITAL LETTER U WITH TILDE + : "Åš" U0168 # LATIN CAPITAL LETTER U WITH TILDE + : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE + : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE + : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE + : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON + : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON + : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON + : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON + : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON + : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON + : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE + : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE + : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE + : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE + : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE + : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE + : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE + : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE + : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE + : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE + : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE + : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE + : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK + : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK + : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK + : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK + : "ÅŽ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX + : "ÅŽ" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX + : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX + : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX + : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX + : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX + : "Åž" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS + : "Åž" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS + : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE + : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE + : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE + : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE + : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE + : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE + : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE + : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE + : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE + : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE + : "ÅŒ" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE + : "ÅŒ" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE + : "Åœ" U017D # LATIN CAPITAL LETTER Z WITH CARON + : "Åœ" U017D # LATIN CAPITAL LETTER Z WITH CARON + : "ÅŸ" U017E # LATIN SMALL LETTER Z WITH CARON + : "ÅŸ" U017E # LATIN SMALL LETTER Z WITH CARON + : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE + : "ƀ" U0180 # LATIN SMALL LETTER B WITH STROKE + : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE + : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE + : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN + : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN + : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN + : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN + : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN + : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN + : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN + : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN + : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE + : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE + : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE + : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE + : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON + : "Ǎ" U01CD # LATIN CAPITAL LETTER A WITH CARON + : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON + : "ǎ" U01CE # LATIN SMALL LETTER A WITH CARON + : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON + : "Ǐ" U01CF # LATIN CAPITAL LETTER I WITH CARON + : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON + : "ǐ" U01D0 # LATIN SMALL LETTER I WITH CARON + : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON + : "Ǒ" U01D1 # LATIN CAPITAL LETTER O WITH CARON + : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON + : "ǒ" U01D2 # LATIN SMALL LETTER O WITH CARON + : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON + : "Ǔ" U01D3 # LATIN CAPITAL LETTER U WITH CARON + : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON + : "ǔ" U01D4 # LATIN SMALL LETTER U WITH CARON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "Ǖ" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "ǖ" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "Ǘ" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "Ǚ" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "ǚ" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "Ǜ" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "Ǟ" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "ǟ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON + : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON + : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON + : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON + : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON + : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON + : "Ç€" U01E4 # LATIN CAPITAL LETTER G WITH STROKE + : "Ç€" U01E4 # LATIN CAPITAL LETTER G WITH STROKE + : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE + : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE + : "ÇŠ" U01E6 # LATIN CAPITAL LETTER G WITH CARON + : "ÇŠ" U01E6 # LATIN CAPITAL LETTER G WITH CARON + : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON + : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON + : "Çš" U01E8 # LATIN CAPITAL LETTER K WITH CARON + : "Çš" U01E8 # LATIN CAPITAL LETTER K WITH CARON + : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON + : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON + : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK + : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK + : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK + : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON + : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON + : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON + : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON + : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON + : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON + : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON + : "ÇŽ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE + : "ÇŽ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE + : "ÇŽ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE + : "ÇŽ" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE + : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE + : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE + : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE + : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE + : "Çž" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE + : "Çž" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE + : "Çž" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE + : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE + : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE + : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + : "ÇŒ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE + : "ÇŒ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE + : "ÇŒ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE + : "ÇŒ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE + : "Çœ" U01FD # LATIN SMALL LETTER AE WITH ACUTE + : "Çœ" U01FD # LATIN SMALL LETTER AE WITH ACUTE + : "Çœ" U01FD # LATIN SMALL LETTER AE WITH ACUTE + : "Çœ" U01FD # LATIN SMALL LETTER AE WITH ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "ÇŸ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE + : "Ȁ" U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE + : "ȁ" U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE + : "Ȃ" U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE + : "ȃ" U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE + : "Ȅ" U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE + : "ȅ" U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE + : "Ȇ" U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE + : "ȇ" U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE + : "Ȉ" U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE + : "ȉ" U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE + : "Ȋ" U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE + : "ȋ" U020B # LATIN SMALL LETTER I WITH INVERTED BREVE + : "Ȍ" U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE + : "ȍ" U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE + : "Ȏ" U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE + : "ȏ" U020F # LATIN SMALL LETTER O WITH INVERTED BREVE + : "Ȑ" U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE + : "ȑ" U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE + : "Ȓ" U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE + : "ȓ" U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE + : "Ȕ" U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE + : "ȕ" U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE + : "Ȗ" U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE + : "ȗ" U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE + : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW + : "ș" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW + : "Ț" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW + : "ț" U021B # LATIN SMALL LETTER T WITH COMMA BELOW + : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON + : "Ȟ" U021E # LATIN CAPITAL LETTER H WITH CARON + : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON + : "ȟ" U021F # LATIN SMALL LETTER H WITH CARON + : "ÈŠ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE + : "ÈŠ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE + : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE + : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE + : "Èš" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA + : "Èš" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA + : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA + : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON + : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE + : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE + : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE + : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON + : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON + : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON + : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON + : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON + : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON + : "Éš" U0268 # LATIN SMALL LETTER I WITH STROKE + : "Éš" U0268 # LATIN SMALL LETTER I WITH STROKE + : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE + : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE + : "Ê°" U02B0 # MODIFIER LETTER SMALL H + : "Ê°" U02B0 # MODIFIER LETTER SMALL H + : "Ê°" U02B0 # MODIFIER LETTER SMALL H + : "Ê°" U02B0 # MODIFIER LETTER SMALL H + : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK + : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK + : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK + : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK + : "ʲ" U02B2 # MODIFIER LETTER SMALL J + : "ʲ" U02B2 # MODIFIER LETTER SMALL J + : "ʲ" U02B2 # MODIFIER LETTER SMALL J + : "ʲ" U02B2 # MODIFIER LETTER SMALL J + : "ʳ" U02B3 # MODIFIER LETTER SMALL R + : "ʳ" U02B3 # MODIFIER LETTER SMALL R + : "ʳ" U02B3 # MODIFIER LETTER SMALL R + : "ʳ" U02B3 # MODIFIER LETTER SMALL R + : "ÊŽ" U02B4 # MODIFIER LETTER SMALL TURNED R + : "ÊŽ" U02B4 # MODIFIER LETTER SMALL TURNED R + : "ÊŽ" U02B4 # MODIFIER LETTER SMALL TURNED R + : "ÊŽ" U02B4 # MODIFIER LETTER SMALL TURNED R + : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK + : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK + : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK + : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK + : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R + : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R + : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R + : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R + : "Ê·" U02B7 # MODIFIER LETTER SMALL W + : "Ê·" U02B7 # MODIFIER LETTER SMALL W + : "Ê·" U02B7 # MODIFIER LETTER SMALL W + : "Ê·" U02B7 # MODIFIER LETTER SMALL W + : "Êž" U02B8 # MODIFIER LETTER SMALL Y + : "Êž" U02B8 # MODIFIER LETTER SMALL Y + : "Êž" U02B8 # MODIFIER LETTER SMALL Y + : "Êž" U02B8 # MODIFIER LETTER SMALL Y + : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA + : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA + : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA + : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA + : "Ë¡" U02E1 # MODIFIER LETTER SMALL L + : "Ë¡" U02E1 # MODIFIER LETTER SMALL L + : "Ë¡" U02E1 # MODIFIER LETTER SMALL L + : "Ë¡" U02E1 # MODIFIER LETTER SMALL L + : "Ë¢" U02E2 # MODIFIER LETTER SMALL S + : "Ë¢" U02E2 # MODIFIER LETTER SMALL S + : "Ë¢" U02E2 # MODIFIER LETTER SMALL S + : "Ë¢" U02E2 # MODIFIER LETTER SMALL S + : "Ë£" U02E3 # MODIFIER LETTER SMALL X + : "Ë£" U02E3 # MODIFIER LETTER SMALL X + : "Ë£" U02E3 # MODIFIER LETTER SMALL X + : "Ë£" U02E3 # MODIFIER LETTER SMALL X + : "Ë€" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + : "Ë€" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + : "Ë€" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + : "Ë€" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "̈́" U0344 # COMBINING GREEK DIALYTIKA TONOS + : "΅" U0385 # GREEK DIALYTIKA TONOS + : "΅" U0385 # GREEK DIALYTIKA TONOS + : "΅" U0385 # GREEK DIALYTIKA TONOS + : "΅" U0385 # GREEK DIALYTIKA TONOS + : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS + : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS + : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS + : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS + : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS + : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS + : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS + : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS + : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS + : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS + : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS + : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS + : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS + : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS + : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS + : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS + : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS + : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS + : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS + : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS + : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS + : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS + : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS + : "Ύ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS + : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS + : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS + : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS + : "Ώ" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "ΐ" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS + : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS + : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS + : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS + : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS + : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS + : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS + : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS + : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS + : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS + : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS + : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS + : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS + : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS + : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS + : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA + : "ϊ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA + : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA + : "ϋ" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA + : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS + : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS + : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS + : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS + : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS + : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS + : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS + : "ύ" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS + : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS + : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS + : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS + : "ώ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS + : "ϓ" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL + : "ϓ" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL + : "ϔ" U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL + : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE + : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE + : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE + : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO + : "Ё" U0401 # CYRILLIC CAPITAL LETTER IO + : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE + : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE + : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE + : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE + : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI + : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI + : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE + : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE + : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE + : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE + : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE + : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE + : "Ѝ" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE + : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U + : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U + : "Ў" U040E # CYRILLIC CAPITAL LETTER SHORT U + : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I + : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I + : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I + : "й" U0439 # CYRILLIC SMALL LETTER SHORT I + : "й" U0439 # CYRILLIC SMALL LETTER SHORT I + : "й" U0439 # CYRILLIC SMALL LETTER SHORT I + : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE + : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE + : "ѐ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE + : "ё" U0451 # CYRILLIC SMALL LETTER IO + : "ё" U0451 # CYRILLIC SMALL LETTER IO + : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE + : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE + : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE + : "ѓ" U0453 # CYRILLIC SMALL LETTER GJE + : "ї" U0457 # CYRILLIC SMALL LETTER YI + : "ї" U0457 # CYRILLIC SMALL LETTER YI + : "ќ" U045C # CYRILLIC SMALL LETTER KJE + : "ќ" U045C # CYRILLIC SMALL LETTER KJE + : "ќ" U045C # CYRILLIC SMALL LETTER KJE + : "ќ" U045C # CYRILLIC SMALL LETTER KJE + : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE + : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE + : "ѝ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE + : "ў" U045E # CYRILLIC SMALL LETTER SHORT U + : "ў" U045E # CYRILLIC SMALL LETTER SHORT U + : "ў" U045E # CYRILLIC SMALL LETTER SHORT U + : "Ѷ" U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + : "Ñ·" U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE + : "Ғ" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE + : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE + : "ғ" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE + : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE + : "Ҟ" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE + : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE + : "ҟ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE + : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE + : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE + : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE + : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE + : "Ӂ" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE + : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE + : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE + : "ӂ" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE + : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE + : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE + : "Ӑ" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE + : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE + : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE + : "ӑ" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE + : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS + : "Ӓ" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS + : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS + : "ӓ" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS + : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE + : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE + : "Ӗ" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE + : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE + : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE + : "ӗ" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE + : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS + : "Ӛ" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS + : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS + : "ӛ" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS + : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS + : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS + : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS + : "ӝ" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS + : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS + : "Ӟ" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS + : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS + : "ӟ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS + : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON + : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON + : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON + : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON + : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON + : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON + : "Ó€" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS + : "Ó€" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS + : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS + : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS + : "ÓŠ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS + : "ÓŠ" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS + : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS + : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS + : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS + : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS + : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS + : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS + : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS + : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS + : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS + : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS + : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON + : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON + : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON + : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON + : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON + : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON + : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS + : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS + : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS + : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS + : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE + : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE + : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE + : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE + : "ÓŽ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS + : "ÓŽ" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS + : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS + : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS + : "Óž" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS + : "Óž" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS + : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS + : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS + : "Ø¢" U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE + : "Ø£" U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE + : "Ø€" U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE + : "Ø¥" U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW + : "ØŠ" U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE + : "ۀ" U06C0 # ARABIC LETTER HEH WITH YEH ABOVE + : "ۂ" U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE + : "ۓ" U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + : "à€©" U0929 # DEVANAGARI LETTER NNNA + : "à€±" U0931 # DEVANAGARI LETTER RRA + : "à€Ž" U0934 # DEVANAGARI LETTER LLLA + : "क़" U0958 # DEVANAGARI LETTER QA + : "ख़" U0959 # DEVANAGARI LETTER KHHA + : "ग़" U095A # DEVANAGARI LETTER GHHA + : "ज़" U095B # DEVANAGARI LETTER ZA + : "ड़" U095C # DEVANAGARI LETTER DDDHA + : "ढ़" U095D # DEVANAGARI LETTER RHA + : "फ़" U095E # DEVANAGARI LETTER FA + : "य़" U095F # DEVANAGARI LETTER YYA + : "ো" U09CB # BENGALI VOWEL SIGN O + : "ৌ" U09CC # BENGALI VOWEL SIGN AU + : "ড়" U09DC # BENGALI LETTER RRA + : "ঢ়" U09DD # BENGALI LETTER RHA + : "য়" U09DF # BENGALI LETTER YYA + : "àš³" U0A33 # GURMUKHI LETTER LLA + : "àš¶" U0A36 # GURMUKHI LETTER SHA + : "ਖ਼" U0A59 # GURMUKHI LETTER KHHA + : "ਗ਼" U0A5A # GURMUKHI LETTER GHHA + : "ਜ਼" U0A5B # GURMUKHI LETTER ZA + : "ਫ਼" U0A5E # GURMUKHI LETTER FA + : "ୈ" U0B48 # ORIYA VOWEL SIGN AI + : "ୋ" U0B4B # ORIYA VOWEL SIGN O + : "ୌ" U0B4C # ORIYA VOWEL SIGN AU + : "ଡ଼" U0B5C # ORIYA LETTER RRA + : "ଢ଼" U0B5D # ORIYA LETTER RHA + : "ஔ" U0B94 # TAMIL LETTER AU + : "ொ" U0BCA # TAMIL VOWEL SIGN O + : "ோ" U0BCB # TAMIL VOWEL SIGN OO + : "ௌ" U0BCC # TAMIL VOWEL SIGN AU + : "ై" U0C48 # TELUGU VOWEL SIGN AI + : "ೀ" U0CC0 # KANNADA VOWEL SIGN II + : "ೇ" U0CC7 # KANNADA VOWEL SIGN EE + : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI + : "ೊ" U0CCA # KANNADA VOWEL SIGN O + : "ೋ" U0CCB # KANNADA VOWEL SIGN OO + : "ೋ" U0CCB # KANNADA VOWEL SIGN OO + : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O + : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO + : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU + : "ේ" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA + : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA + : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA + : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA + : "ෞ" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA + : "àœƒ" U0F43 # TIBETAN LETTER GHA + : "àœ" U0F4D # TIBETAN LETTER DDHA + : "àœ’" U0F52 # TIBETAN LETTER DHA + : "àœ—" U0F57 # TIBETAN LETTER BHA + : "àœœ" U0F5C # TIBETAN LETTER DZHA + : "àœ©" U0F69 # TIBETAN LETTER KSSA + : "àœ³" U0F73 # TIBETAN VOWEL SIGN II + : "àœµ" U0F75 # TIBETAN VOWEL SIGN UU + : "àœ¶" U0F76 # TIBETAN VOWEL SIGN VOCALIC R + : "àœž" U0F78 # TIBETAN VOWEL SIGN VOCALIC L + : "àŸ" U0F81 # TIBETAN VOWEL SIGN REVERSED II + : "àŸ“" U0F93 # TIBETAN SUBJOINED LETTER GHA + : "àŸ" U0F9D # TIBETAN SUBJOINED LETTER DDHA + : "àŸ¢" U0FA2 # TIBETAN SUBJOINED LETTER DHA + : "àŸ§" U0FA7 # TIBETAN SUBJOINED LETTER BHA + : "àŸ¬" U0FAC # TIBETAN SUBJOINED LETTER DZHA + : "àŸ¹" U0FB9 # TIBETAN SUBJOINED LETTER KSSA + : "ဩ" U1026 # MYANMAR LETTER UU + : "ᾀ" U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW + : "ខ" U1E01 # LATIN SMALL LETTER A WITH RING BELOW + : "ᾂ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE + : "ᾂ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE + : "ឃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE + : "ឃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE + : "ᾄ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW + : "ᾄ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW + : "ᾄ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW + : "ᾅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW + : "ᾅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW + : "ᾅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW + : "ᾆ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW + : "ᾇ" U1E07 # LATIN SMALL LETTER B WITH LINE BELOW + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ឈ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + : "ᾊ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE + : "ᾊ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE + : "ᾋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE + : "ᾋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE + : "ᾌ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW + : "ᾌ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW + : "ᾌ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW + : "ឍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW + : "ឍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW + : "ឍ" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW + : "ᾎ" U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW + : "ត" U1E0F # LATIN SMALL LETTER D WITH LINE BELOW + : "ថ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA + : "ថ" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA + : "ᾑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA + : "ᾑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA + : "ᾒ" U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + : "ᾓ" U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾔ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾖ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ᾗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE + : "ម" U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + : "ᾙ" U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW + : "ᾚ" U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW + : "ᾛ" U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ᾜ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ឝ" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE + : "ᾞ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE + : "ᾞ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE + : "ᾟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE + : "ᾟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE + : "áž " U1E20 # LATIN CAPITAL LETTER G WITH MACRON + : "áž " U1E20 # LATIN CAPITAL LETTER G WITH MACRON + : "áž " U1E20 # LATIN CAPITAL LETTER G WITH MACRON + : "áž¡" U1E21 # LATIN SMALL LETTER G WITH MACRON + : "áž¡" U1E21 # LATIN SMALL LETTER G WITH MACRON + : "áž¡" U1E21 # LATIN SMALL LETTER G WITH MACRON + : "អ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE + : "អ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE + : "ឣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE + : "ឣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE + : "ក" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW + : "ក" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW + : "ក" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW + : "ឥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW + : "ឥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW + : "ឥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW + : "ដ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS + : "ដ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS + : "ឧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS + : "ឧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS + : "ážš" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA + : "ážš" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA + : "áž©" U1E29 # LATIN SMALL LETTER H WITH CEDILLA + : "áž©" U1E29 # LATIN SMALL LETTER H WITH CEDILLA + : "ឪ" U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW + : "áž«" U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW + : "ឬ" U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW + : "áž­" U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "áž®" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "ឯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + : "áž°" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE + : "áž°" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE + : "áž°" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE + : "áž°" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE + : "áž±" U1E31 # LATIN SMALL LETTER K WITH ACUTE + : "áž±" U1E31 # LATIN SMALL LETTER K WITH ACUTE + : "áž±" U1E31 # LATIN SMALL LETTER K WITH ACUTE + : "áž±" U1E31 # LATIN SMALL LETTER K WITH ACUTE + : "áž²" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW + : "áž²" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW + : "áž²" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW + : "áž³" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW + : "áž³" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW + : "áž³" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW + : "ណ" U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW + : "ážµ" U1E35 # LATIN SMALL LETTER K WITH LINE BELOW + : "ា" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW + : "ា" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW + : "ា" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW + : "áž·" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW + : "áž·" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW + : "áž·" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "ážž" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "áž¹" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + : "ឺ" U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW + : "áž»" U1E3B # LATIN SMALL LETTER L WITH LINE BELOW + : "ឌ" U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + : "ážœ" U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW + : "ស" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE + : "ស" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE + : "ស" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE + : "ស" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE + : "áž¿" U1E3F # LATIN SMALL LETTER M WITH ACUTE + : "áž¿" U1E3F # LATIN SMALL LETTER M WITH ACUTE + : "áž¿" U1E3F # LATIN SMALL LETTER M WITH ACUTE + : "áž¿" U1E3F # LATIN SMALL LETTER M WITH ACUTE + : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE + : "Ṁ" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE + : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE + : "ṁ" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE + : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW + : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW + : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW + : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW + : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW + : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW + : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE + : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE + : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE + : "ṅ" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE + : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW + : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW + : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW + : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW + : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW + : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW + : "Ṉ" U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW + : "ṉ" U1E49 # LATIN SMALL LETTER N WITH LINE BELOW + : "Ṋ" U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + : "ṋ" U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "ṍ" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "ṏ" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "Ṑ" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "Ṓ" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE + : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE +

      : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +

      : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +

      : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +

      : "Ṕ" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE +

      : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +

      : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +

      : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +

      : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE +

      : "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE +

      : "Ṗ" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE +

      : "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE +

      : "ṗ" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE + : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE + : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE + : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE + : "ṙ" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE + : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW + : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW + : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW + : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW + : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW + : "ṛ" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "ṝ" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + : "Ṟ" U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW + : "ṟ" U1E5F # LATIN SMALL LETTER R WITH LINE BELOW + : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE + : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE + : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE + : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE + : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW + : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW + : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW + : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW + : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW + : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹€" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "Ṋ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṛ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE + : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE + : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE + : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE + : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW + : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW + : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW + : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW + : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW + : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW + : "á¹®" U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW + : "ṯ" U1E6F # LATIN SMALL LETTER T WITH LINE BELOW + : "á¹°" U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + : "á¹±" U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW + : "á¹²" U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + : "á¹³" U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW + : "Ṏ" U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW + : "á¹µ" U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW + : "Ṷ" U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + : "á¹·" U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "Ṟ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + : "Ṍ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE + : "Ṍ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE + : "Ṍ" U1E7C # LATIN CAPITAL LETTER V WITH TILDE + : "Ṝ" U1E7D # LATIN SMALL LETTER V WITH TILDE + : "Ṝ" U1E7D # LATIN SMALL LETTER V WITH TILDE + : "Ṝ" U1E7D # LATIN SMALL LETTER V WITH TILDE + : "ṟ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW + : "ṟ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW + : "ṟ" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW + : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW + : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW + : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW + : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE + : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE + : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE + : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE + : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE + : "ẁ" U1E81 # LATIN SMALL LETTER W WITH GRAVE + : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE + : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE + : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE + : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE + : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE + : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE + : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE + : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE + : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS + : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS + : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS + : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS + : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE + : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE + : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE + : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE + : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW + : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW + : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW + : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW + : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW + : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW + : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE + : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE + : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE + : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE + : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS + : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS + : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS + : "ẍ" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS + : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE + : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE + : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE + : "ẏ" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE + : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + : "Ẑ" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX + : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX + : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW + : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW + : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW + : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW + : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW + : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW + : "Ẕ" U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW + : "ẕ" U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW + : "ẖ" U1E96 # LATIN SMALL LETTER H WITH LINE BELOW + : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS + : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS + : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE + : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE + : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE + : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE + : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE + : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE + : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW + : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW + : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW + : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW + : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW + : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW + : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE + : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE + : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE + : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE + : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE + : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẁ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "Ẋ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẚ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "Ẏ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + : "ẞ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW + : "ẞ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW + : "ẞ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW + : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW + : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW + : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW + : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE + : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE + : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE + : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE + : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE + : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE + : "Ẍ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE + : "Ẍ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE + : "Ẍ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE + : "ẜ" U1EBD # LATIN SMALL LETTER E WITH TILDE + : "ẜ" U1EBD # LATIN SMALL LETTER E WITH TILDE + : "ẜ" U1EBD # LATIN SMALL LETTER E WITH TILDE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ẟ" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "ề" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "ễ" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE + : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE + : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE + : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE + : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE + : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE + : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW + : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW + : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW + : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW + : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW + : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW + : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW + : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW + : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW + : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW + : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW + : "ọ" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW + : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE + : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE + : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE + : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE + : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE + : "ỏ" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ố" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ồ" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ổ" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ỗ" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "ỗ" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "ộ" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "ớ" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "ờ" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW + : "Ề" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW + : "Ề" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW + : "Ề" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW + : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW + : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW + : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW + : "Ị" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE + : "Ị" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE + : "Ị" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE + : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE + : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE + : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "Ớ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW + : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE + : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE + : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE + : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE + : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE + : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE + : "Ỏ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW + : "Ỏ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW + : "Ỏ" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW + : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW + : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW + : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW + : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE + : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE + : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE + : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE + : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE + : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE + : "Ở" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE + : "Ở" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE + : "Ở" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE + : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE + : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE + : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE + : "ጀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI + : "ጀ" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI + : "ጁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA + : "ጁ" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጅ" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ገ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI + : "ገ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI + : "ጉ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA + : "ጉ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጊ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጋ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ጌ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ግ" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጎ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጏ" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + : "ጐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI + : "ጐ" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI + : "጑" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA + : "጑" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጒ" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጔ" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + : "ጘ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI + : "ጘ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI + : "ጙ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA + : "ጙ" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጚ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጛ" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጜ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጝ" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + : "ጠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI + : "ጠ" U1F20 # GREEK SMALL LETTER ETA WITH PSILI + : "ጡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA + : "ጡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጢ" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጣ" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጀ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጥ" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጊ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጚ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI + : "ጚ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI + : "ጩ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA + : "ጩ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጪ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጫ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጬ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጭ" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጮ" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጯ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + : "ጰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI + : "ጰ" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI + : "ጱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA + : "ጱ" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጲ" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጳ" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጎ" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጵ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጷ" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጞ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI + : "ጞ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI + : "ጹ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA + : "ጹ" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጺ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጻ" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጌ" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጜ" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጟ" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ጿ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + : "ᜀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI + : "ᜀ" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI + : "ᜁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA + : "ᜁ" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜅ" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + : "ᜈ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI + : "ᜈ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI + : "ᜉ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA + : "ᜉ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜊ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜋ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜌ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜍ" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + : "ᜐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI + : "ᜐ" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI + : "ᜑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA + : "ᜑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜒ" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "ᜓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜔" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜕" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜖" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜗" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "᜙" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA + : "᜙" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜛" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "᜝" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜟ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + : "ᜠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI + : "ᜠ" U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI + : "ᜡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA + : "ᜡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜢ" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜣ" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜀ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜥ" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜊ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "᜚" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI + : "᜚" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI + : "ᜩ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA + : "ᜩ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜪ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜫ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜬ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜭ" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜮ" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜯ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + : "ᜰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA + : "ᜰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA + : "ᜰ" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA + : "ᜲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA + : "ᜲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA + : "ᜲ" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA + : "ᜎ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA + : "ᜎ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA + : "ᜎ" U1F74 # GREEK SMALL LETTER ETA WITH VARIA + : "᜶" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA + : "᜶" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA + : "᜶" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA + : "᜞" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA + : "᜞" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA + : "᜞" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA + : "᜺" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA + : "᜺" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA + : "᜺" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA + : "ᜌ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA + : "ᜌ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA + : "ᜌ" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "ៀ" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "េ" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ែ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ោ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ៅ" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ំ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ះ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "ៈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៉" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៊" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "់" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៌" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៍" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៎" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៏" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "័" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "៑" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "្" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៓" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "។" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៕" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៖" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "ៗ" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៘" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៙" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៚" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៛" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "ៜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៝" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៞" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៟" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "០" U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "១" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "២" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "៣" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "ៀ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៊" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៧" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៚" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៩" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៪" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៫" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៬" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៭" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៮" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៯" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + : "៰" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY + : "៰" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY + : "៰" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY + : "៱" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON + : "៱" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON + : "៱" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៲" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI + : "៳" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI + : "៳" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៎" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + : "៶" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI + : "៶" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI + : "៶" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៷" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + : "៞" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY + : "៞" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY + : "៞" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY + : "៹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON + : "៹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON + : "៹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON + : "៺" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA + : "៺" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA + : "៺" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA + : "៌" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + : "៌" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI + : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI + : "῁" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῂ" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI + : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI + : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῄ" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI + : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI + : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA + : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA + : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA + : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA + : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA + : "Ὴ" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA + : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + : "῍" U1FCD # GREEK PSILI AND VARIA + : "῍" U1FCD # GREEK PSILI AND VARIA + : "῍" U1FCD # GREEK PSILI AND VARIA + : "῎" U1FCE # GREEK PSILI AND OXIA + : "῎" U1FCE # GREEK PSILI AND OXIA + : "῎" U1FCE # GREEK PSILI AND OXIA + : "῎" U1FCE # GREEK PSILI AND OXIA + : "῏" U1FCF # GREEK PSILI AND PERISPOMENI + : "῏" U1FCF # GREEK PSILI AND PERISPOMENI + : "῏" U1FCF # GREEK PSILI AND PERISPOMENI + : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY + : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY + : "ῐ" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY + : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON + : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON + : "ῑ" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῒ" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA + : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI + : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI + : "ῖ" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "ῗ" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY + : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY + : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY + : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON + : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON + : "Ῑ" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON + : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA + : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA + : "Ὶ" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA + : "῝" U1FDD # GREEK DASIA AND VARIA + : "῝" U1FDD # GREEK DASIA AND VARIA + : "῝" U1FDD # GREEK DASIA AND VARIA + : "῞" U1FDE # GREEK DASIA AND OXIA + : "῞" U1FDE # GREEK DASIA AND OXIA + : "῞" U1FDE # GREEK DASIA AND OXIA + : "῞" U1FDE # GREEK DASIA AND OXIA + : "῟" U1FDF # GREEK DASIA AND PERISPOMENI + : "῟" U1FDF # GREEK DASIA AND PERISPOMENI + : "῟" U1FDF # GREEK DASIA AND PERISPOMENI + : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY + : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY + : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY + : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON + : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON + : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA + : "á¿€" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI + : "á¿€" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI + : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA + : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA + : "á¿Š" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI + : "á¿Š" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI + : "á¿Š" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + : "á¿š" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY + : "á¿š" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY + : "á¿š" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY + : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON + : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON + : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON + : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA + : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA + : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA + : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA + : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA + : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA + : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA + : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI + : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI + : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "á¿Ž" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI + : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI + : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + : "á¿ž" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA + : "á¿ž" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA + : "á¿ž" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA + : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA + : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA + : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA + : "á¿Œ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + : "á¿Œ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + <0> : "⁰" U2070 # SUPERSCRIPT ZERO + <0> : "⁰" U2070 # SUPERSCRIPT ZERO + : "⁰" U2070 # SUPERSCRIPT ZERO + : "⁰" U2070 # SUPERSCRIPT ZERO + : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I + : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I + : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I + : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I + <4> : "⁎" U2074 # SUPERSCRIPT FOUR + <4> : "⁎" U2074 # SUPERSCRIPT FOUR + : "⁎" U2074 # SUPERSCRIPT FOUR + : "⁎" U2074 # SUPERSCRIPT FOUR + <5> : "⁵" U2075 # SUPERSCRIPT FIVE + <5> : "⁵" U2075 # SUPERSCRIPT FIVE + : "⁵" U2075 # SUPERSCRIPT FIVE + : "⁵" U2075 # SUPERSCRIPT FIVE + <6> : "⁶" U2076 # SUPERSCRIPT SIX + <6> : "⁶" U2076 # SUPERSCRIPT SIX + : "⁶" U2076 # SUPERSCRIPT SIX + : "⁶" U2076 # SUPERSCRIPT SIX + <7> : "⁷" U2077 # SUPERSCRIPT SEVEN + <7> : "⁷" U2077 # SUPERSCRIPT SEVEN + : "⁷" U2077 # SUPERSCRIPT SEVEN + : "⁷" U2077 # SUPERSCRIPT SEVEN + <8> : "⁞" U2078 # SUPERSCRIPT EIGHT + <8> : "⁞" U2078 # SUPERSCRIPT EIGHT + : "⁞" U2078 # SUPERSCRIPT EIGHT + : "⁞" U2078 # SUPERSCRIPT EIGHT + <9> : "⁹" U2079 # SUPERSCRIPT NINE + <9> : "⁹" U2079 # SUPERSCRIPT NINE + : "⁹" U2079 # SUPERSCRIPT NINE + : "⁹" U2079 # SUPERSCRIPT NINE + : "⁺" U207A # SUPERSCRIPT PLUS SIGN + : "⁺" U207A # SUPERSCRIPT PLUS SIGN + : "⁺" U207A # SUPERSCRIPT PLUS SIGN + : "⁺" U207A # SUPERSCRIPT PLUS SIGN + : "⁻" U207B # SUPERSCRIPT MINUS + : "⁻" U207B # SUPERSCRIPT MINUS + : "⁌" U207C # SUPERSCRIPT EQUALS SIGN + : "⁌" U207C # SUPERSCRIPT EQUALS SIGN + : "⁌" U207C # SUPERSCRIPT EQUALS SIGN + : "⁌" U207C # SUPERSCRIPT EQUALS SIGN + : "⁜" U207D # SUPERSCRIPT LEFT PARENTHESIS + : "⁜" U207D # SUPERSCRIPT LEFT PARENTHESIS + : " " U207E # SUPERSCRIPT RIGHT PARENTHESIS + : " " U207E # SUPERSCRIPT RIGHT PARENTHESIS + : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N + : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N + : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N + : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N + <0> : "₀" U2080 # SUBSCRIPT ZERO + : "₀" U2080 # SUBSCRIPT ZERO + <0> : "₀" U2080 # SUBSCRIPT ZERO + : "₀" U2080 # SUBSCRIPT ZERO + <1> : "₁" U2081 # SUBSCRIPT ONE + : "₁" U2081 # SUBSCRIPT ONE + <1> : "₁" U2081 # SUBSCRIPT ONE + : "₁" U2081 # SUBSCRIPT ONE + <2> : "₂" U2082 # SUBSCRIPT TWO + : "₂" U2082 # SUBSCRIPT TWO + : "₂" U2082 # SUBSCRIPT TWO + <2> : "₂" U2082 # SUBSCRIPT TWO + : "₂" U2082 # SUBSCRIPT TWO + : "₂" U2082 # SUBSCRIPT TWO + <3> : "₃" U2083 # SUBSCRIPT THREE + : "₃" U2083 # SUBSCRIPT THREE + <3> : "₃" U2083 # SUBSCRIPT THREE + : "₃" U2083 # SUBSCRIPT THREE + <4> : "₄" U2084 # SUBSCRIPT FOUR + : "₄" U2084 # SUBSCRIPT FOUR + <4> : "₄" U2084 # SUBSCRIPT FOUR + : "₄" U2084 # SUBSCRIPT FOUR + <5> : "₅" U2085 # SUBSCRIPT FIVE + : "₅" U2085 # SUBSCRIPT FIVE + <5> : "₅" U2085 # SUBSCRIPT FIVE + : "₅" U2085 # SUBSCRIPT FIVE + <6> : "₆" U2086 # SUBSCRIPT SIX + : "₆" U2086 # SUBSCRIPT SIX + <6> : "₆" U2086 # SUBSCRIPT SIX + : "₆" U2086 # SUBSCRIPT SIX + <7> : "₇" U2087 # SUBSCRIPT SEVEN + : "₇" U2087 # SUBSCRIPT SEVEN + <7> : "₇" U2087 # SUBSCRIPT SEVEN + : "₇" U2087 # SUBSCRIPT SEVEN + <8> : "₈" U2088 # SUBSCRIPT EIGHT + : "₈" U2088 # SUBSCRIPT EIGHT + <8> : "₈" U2088 # SUBSCRIPT EIGHT + : "₈" U2088 # SUBSCRIPT EIGHT + <9> : "₉" U2089 # SUBSCRIPT NINE + : "₉" U2089 # SUBSCRIPT NINE + <9> : "₉" U2089 # SUBSCRIPT NINE + : "₉" U2089 # SUBSCRIPT NINE + : "₊" U208A # SUBSCRIPT PLUS SIGN + : "₊" U208A # SUBSCRIPT PLUS SIGN + : "₊" U208A # SUBSCRIPT PLUS SIGN + : "₊" U208A # SUBSCRIPT PLUS SIGN + : "₋" U208B # SUBSCRIPT MINUS + : "₋" U208B # SUBSCRIPT MINUS + : "₌" U208C # SUBSCRIPT EQUALS SIGN + : "₌" U208C # SUBSCRIPT EQUALS SIGN + : "₌" U208C # SUBSCRIPT EQUALS SIGN + : "₌" U208C # SUBSCRIPT EQUALS SIGN + : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS + : "₍" U208D # SUBSCRIPT LEFT PARENTHESIS + : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS + : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS + : "℠" U2120 # SERVICE MARK + : "℠" U2120 # SERVICE MARK + : "™" U2122 # TRADE MARK SIGN + : "™" U2122 # TRADE MARK SIGN + : "↚" U219A # LEFTWARDS ARROW WITH STROKE + : "↚" U219A # LEFTWARDS ARROW WITH STROKE + : "↛" U219B # RIGHTWARDS ARROW WITH STROKE + : "↛" U219B # RIGHTWARDS ARROW WITH STROKE + : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE + : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE + : "∄" U2204 # THERE DOES NOT EXIST + : "∉" U2209 # NOT AN ELEMENT OF + : "∌" U220C # DOES NOT CONTAIN AS MEMBER + : "∀" U2224 # DOES NOT DIVIDE + : "∊" U2226 # NOT PARALLEL TO + : "≁" U2241 # NOT TILDE + : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO + : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO + : "≉" U2249 # NOT ALMOST EQUAL TO + : "≠" U2260 # NOT EQUAL TO + : "≠" U2260 # NOT EQUAL TO + : "≢" U2262 # NOT IDENTICAL TO + : "≭" U226D # NOT EQUIVALENT TO + : "≮" U226E # NOT LESS-THAN + : "≮" U226E # NOT LESS-THAN + : "≯" U226F # NOT GREATER-THAN + : "≯" U226F # NOT GREATER-THAN + : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO + : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO + : "≮" U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO + : "≵" U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO + : "≾" U2278 # NEITHER LESS-THAN NOR GREATER-THAN + : "≹" U2279 # NEITHER GREATER-THAN NOR LESS-THAN + : "⊀" U2280 # DOES NOT PRECEDE + : "⊁" U2281 # DOES NOT SUCCEED + : "⊄" U2284 # NOT A SUBSET OF + : "⊄" U2284 # NOT A SUBSET OF + : "⊅" U2285 # NOT A SUPERSET OF + : "⊅" U2285 # NOT A SUPERSET OF + : "⊈" U2288 # NEITHER A SUBSET OF NOR EQUAL TO + : "⊉" U2289 # NEITHER A SUPERSET OF NOR EQUAL TO + : "⊬" U22AC # DOES NOT PROVE + : "⊭" U22AD # NOT TRUE + : "⊮" U22AE # DOES NOT FORCE + : "⊯" U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE + : "⋠" U22E0 # DOES NOT PRECEDE OR EQUAL + : "⋡" U22E1 # DOES NOT SUCCEED OR EQUAL + : "⋢" U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO + : "⋣" U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO + : "⋪" U22EA # NOT NORMAL SUBGROUP OF + : "⋫" U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP + : "⋬" U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO + : "⋭" U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL + <1> : "①" U2460 # CIRCLED DIGIT ONE + : "①" U2460 # CIRCLED DIGIT ONE + <2> : "②" U2461 # CIRCLED DIGIT TWO + : "②" U2461 # CIRCLED DIGIT TWO + : "②" U2461 # CIRCLED DIGIT TWO + <3> : "③" U2462 # CIRCLED DIGIT THREE + : "③" U2462 # CIRCLED DIGIT THREE + <4> : "④" U2463 # CIRCLED DIGIT FOUR + : "④" U2463 # CIRCLED DIGIT FOUR + <5> : "â‘€" U2464 # CIRCLED DIGIT FIVE + : "â‘€" U2464 # CIRCLED DIGIT FIVE + <6> : "⑥" U2465 # CIRCLED DIGIT SIX + : "⑥" U2465 # CIRCLED DIGIT SIX + <7> : "⑩" U2466 # CIRCLED DIGIT SEVEN + : "⑩" U2466 # CIRCLED DIGIT SEVEN + <8> : "⑧" U2467 # CIRCLED DIGIT EIGHT + : "⑧" U2467 # CIRCLED DIGIT EIGHT + <9> : "⑹" U2468 # CIRCLED DIGIT NINE + : "⑹" U2468 # CIRCLED DIGIT NINE + <1> <0> : "⑩" U2469 # CIRCLED NUMBER TEN + <1> : "⑩" U2469 # CIRCLED NUMBER TEN + <0> : "⑩" U2469 # CIRCLED NUMBER TEN + : "⑩" U2469 # CIRCLED NUMBER TEN + <1> <1> : "⑪" U246A # CIRCLED NUMBER ELEVEN + <1> : "⑪" U246A # CIRCLED NUMBER ELEVEN + <1> : "⑪" U246A # CIRCLED NUMBER ELEVEN + : "⑪" U246A # CIRCLED NUMBER ELEVEN + <1> <2> : "⑫" U246B # CIRCLED NUMBER TWELVE + <1> : "⑫" U246B # CIRCLED NUMBER TWELVE + <1> : "⑫" U246B # CIRCLED NUMBER TWELVE + <2> : "⑫" U246B # CIRCLED NUMBER TWELVE + : "⑫" U246B # CIRCLED NUMBER TWELVE + : "⑫" U246B # CIRCLED NUMBER TWELVE + <1> <3> : "⑬" U246C # CIRCLED NUMBER THIRTEEN + <1> : "⑬" U246C # CIRCLED NUMBER THIRTEEN + <3> : "⑬" U246C # CIRCLED NUMBER THIRTEEN + : "⑬" U246C # CIRCLED NUMBER THIRTEEN + <1> <4> : "⑭" U246D # CIRCLED NUMBER FOURTEEN + <1> : "⑭" U246D # CIRCLED NUMBER FOURTEEN + <4> : "⑭" U246D # CIRCLED NUMBER FOURTEEN + : "⑭" U246D # CIRCLED NUMBER FOURTEEN + <1> <5> : "⑮" U246E # CIRCLED NUMBER FIFTEEN + <1> : "⑮" U246E # CIRCLED NUMBER FIFTEEN + <5> : "⑮" U246E # CIRCLED NUMBER FIFTEEN + : "⑮" U246E # CIRCLED NUMBER FIFTEEN + <1> <6> : "⑯" U246F # CIRCLED NUMBER SIXTEEN + <1> : "⑯" U246F # CIRCLED NUMBER SIXTEEN + <6> : "⑯" U246F # CIRCLED NUMBER SIXTEEN + : "⑯" U246F # CIRCLED NUMBER SIXTEEN + <1> <7> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN + <1> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN + <7> : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN + : "⑰" U2470 # CIRCLED NUMBER SEVENTEEN + <1> <8> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN + <1> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN + <8> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN + : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN + <1> <9> : "⑲" U2472 # CIRCLED NUMBER NINETEEN + <1> : "⑲" U2472 # CIRCLED NUMBER NINETEEN + <9> : "⑲" U2472 # CIRCLED NUMBER NINETEEN + : "⑲" U2472 # CIRCLED NUMBER NINETEEN + <2> <0> : "⑳" U2473 # CIRCLED NUMBER TWENTY + <2> : "⑳" U2473 # CIRCLED NUMBER TWENTY + <0> : "⑳" U2473 # CIRCLED NUMBER TWENTY + : "⑳" U2473 # CIRCLED NUMBER TWENTY + <0> : "⑳" U2473 # CIRCLED NUMBER TWENTY + : "⑳" U2473 # CIRCLED NUMBER TWENTY + : "Ⓐ" U24B6 # CIRCLED LATIN CAPITAL LETTER A + : "Ⓑ" U24B7 # CIRCLED LATIN CAPITAL LETTER B + : "Ⓘ" U24B8 # CIRCLED LATIN CAPITAL LETTER C + : "Ⓓ" U24B9 # CIRCLED LATIN CAPITAL LETTER D + : "Ⓔ" U24BA # CIRCLED LATIN CAPITAL LETTER E + : "Ⓕ" U24BB # CIRCLED LATIN CAPITAL LETTER F + : "â’Œ" U24BC # CIRCLED LATIN CAPITAL LETTER G + : "â’œ" U24BD # CIRCLED LATIN CAPITAL LETTER H + : "â’Ÿ" U24BE # CIRCLED LATIN CAPITAL LETTER I + : "Ⓙ" U24BF # CIRCLED LATIN CAPITAL LETTER J + : "Ⓚ" U24C0 # CIRCLED LATIN CAPITAL LETTER K + : "Ⓛ" U24C1 # CIRCLED LATIN CAPITAL LETTER L + : "Ⓜ" U24C2 # CIRCLED LATIN CAPITAL LETTER M + : "Ⓝ" U24C3 # CIRCLED LATIN CAPITAL LETTER N + : "Ⓞ" U24C4 # CIRCLED LATIN CAPITAL LETTER O +

      : "Ⓟ" U24C5 # CIRCLED LATIN CAPITAL LETTER P + : "Ⓠ" U24C6 # CIRCLED LATIN CAPITAL LETTER Q + : "Ⓡ" U24C7 # CIRCLED LATIN CAPITAL LETTER R + : "Ⓢ" U24C8 # CIRCLED LATIN CAPITAL LETTER S + : "Ⓣ" U24C9 # CIRCLED LATIN CAPITAL LETTER T + : "Ⓤ" U24CA # CIRCLED LATIN CAPITAL LETTER U + : "Ⓥ" U24CB # CIRCLED LATIN CAPITAL LETTER V + : "Ⓦ" U24CC # CIRCLED LATIN CAPITAL LETTER W + : "Ⓧ" U24CD # CIRCLED LATIN CAPITAL LETTER X + : "Ⓨ" U24CE # CIRCLED LATIN CAPITAL LETTER Y + : "Ⓩ" U24CF # CIRCLED LATIN CAPITAL LETTER Z + : "ⓐ" U24D0 # CIRCLED LATIN SMALL LETTER A + : "ⓑ" U24D1 # CIRCLED LATIN SMALL LETTER B + : "ⓒ" U24D2 # CIRCLED LATIN SMALL LETTER C + : "ⓓ" U24D3 # CIRCLED LATIN SMALL LETTER D + : "ⓔ" U24D4 # CIRCLED LATIN SMALL LETTER E + : "ⓕ" U24D5 # CIRCLED LATIN SMALL LETTER F + : "ⓖ" U24D6 # CIRCLED LATIN SMALL LETTER G + : "ⓗ" U24D7 # CIRCLED LATIN SMALL LETTER H + : "ⓘ" U24D8 # CIRCLED LATIN SMALL LETTER I + : "ⓙ" U24D9 # CIRCLED LATIN SMALL LETTER J + : "ⓚ" U24DA # CIRCLED LATIN SMALL LETTER K + : "ⓛ" U24DB # CIRCLED LATIN SMALL LETTER L + : "ⓜ" U24DC # CIRCLED LATIN SMALL LETTER M + : "ⓝ" U24DD # CIRCLED LATIN SMALL LETTER N + : "ⓞ" U24DE # CIRCLED LATIN SMALL LETTER O +

      : "ⓟ" U24DF # CIRCLED LATIN SMALL LETTER P + : "ⓠ" U24E0 # CIRCLED LATIN SMALL LETTER Q + : "ⓡ" U24E1 # CIRCLED LATIN SMALL LETTER R + : "ⓢ" U24E2 # CIRCLED LATIN SMALL LETTER S + : "ⓣ" U24E3 # CIRCLED LATIN SMALL LETTER T + : "â“€" U24E4 # CIRCLED LATIN SMALL LETTER U + : "ⓥ" U24E5 # CIRCLED LATIN SMALL LETTER V + : "ⓩ" U24E6 # CIRCLED LATIN SMALL LETTER W + : "ⓧ" U24E7 # CIRCLED LATIN SMALL LETTER X + : "⓹" U24E8 # CIRCLED LATIN SMALL LETTER Y + : "ⓩ" U24E9 # CIRCLED LATIN SMALL LETTER Z + <0> : "⓪" U24EA # CIRCLED DIGIT ZERO + : "⓪" U24EA # CIRCLED DIGIT ZERO + : "⫝̸" U2ADC # FORKING + : "が" U304C # HIRAGANA LETTER GA + : "ぎ" U304E # HIRAGANA LETTER GI + : "ぐ" U3050 # HIRAGANA LETTER GU + : "げ" U3052 # HIRAGANA LETTER GE + : "ご" U3054 # HIRAGANA LETTER GO + : "ざ" U3056 # HIRAGANA LETTER ZA + : "じ" U3058 # HIRAGANA LETTER ZI + : "ず" U305A # HIRAGANA LETTER ZU + : "ぜ" U305C # HIRAGANA LETTER ZE + : "ぞ" U305E # HIRAGANA LETTER ZO + : "だ" U3060 # HIRAGANA LETTER DA + : "ぢ" U3062 # HIRAGANA LETTER DI + : "づ" U3065 # HIRAGANA LETTER DU + : "で" U3067 # HIRAGANA LETTER DE + : "ど" U3069 # HIRAGANA LETTER DO + : "ば" U3070 # HIRAGANA LETTER BA + : "ぱ" U3071 # HIRAGANA LETTER PA + : "び" U3073 # HIRAGANA LETTER BI + : "ぎ" U3074 # HIRAGANA LETTER PI + : "ぶ" U3076 # HIRAGANA LETTER BU + : "ぷ" U3077 # HIRAGANA LETTER PU + : "べ" U3079 # HIRAGANA LETTER BE + : "ぺ" U307A # HIRAGANA LETTER PE + : "が" U307C # HIRAGANA LETTER BO + : "ぜ" U307D # HIRAGANA LETTER PO + : "ゔ" U3094 # HIRAGANA LETTER VU + : "ゞ" U309E # HIRAGANA VOICED ITERATION MARK + : "ガ" U30AC # KATAKANA LETTER GA + : "ギ" U30AE # KATAKANA LETTER GI + : "グ" U30B0 # KATAKANA LETTER GU + : "ゲ" U30B2 # KATAKANA LETTER GE + : "ã‚Ž" U30B4 # KATAKANA LETTER GO + : "ザ" U30B6 # KATAKANA LETTER ZA + : "ã‚ž" U30B8 # KATAKANA LETTER ZI + : "ズ" U30BA # KATAKANA LETTER ZU + : "ã‚Œ" U30BC # KATAKANA LETTER ZE + : "ã‚Ÿ" U30BE # KATAKANA LETTER ZO + : "ダ" U30C0 # KATAKANA LETTER DA + : "ヂ" U30C2 # KATAKANA LETTER DI + : "ヅ" U30C5 # KATAKANA LETTER DU + : "デ" U30C7 # KATAKANA LETTER DE + : "ド" U30C9 # KATAKANA LETTER DO + : "バ" U30D0 # KATAKANA LETTER BA + : "パ" U30D1 # KATAKANA LETTER PA + : "ビ" U30D3 # KATAKANA LETTER BI + : "ピ" U30D4 # KATAKANA LETTER PI + : "ブ" U30D6 # KATAKANA LETTER BU + : "プ" U30D7 # KATAKANA LETTER PU + : "ベ" U30D9 # KATAKANA LETTER BE + : "ペ" U30DA # KATAKANA LETTER PE + : "ボ" U30DC # KATAKANA LETTER BO + : "ポ" U30DD # KATAKANA LETTER PO + : "ノ" U30F4 # KATAKANA LETTER VU + : "ヷ" U30F7 # KATAKANA LETTER VA + : "マ" U30F8 # KATAKANA LETTER VI + : "ヹ" U30F9 # KATAKANA LETTER VE + : "ヺ" U30FA # KATAKANA LETTER VO + : "ミ" U30FE # KATAKANA VOICED ITERATION MARK + : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK + : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK + : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK + : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK + : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK + : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK + : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK + : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK + : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK + : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK + : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK + : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK + : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK + : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK + : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK + : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK + : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK + : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK + : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK + : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK + : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK + : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK + : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK + : "㆝" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK + : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK + : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK + : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK + : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK + <2> <1> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + <2> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + <1> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + <1> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE + <2> <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + <2> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO + <2> <3> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + <2> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + <3> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + <3> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE + <2> <4> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + <2> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + <4> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + <4> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR + <2> <5> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + <2> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + <5> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + <5> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE + <2> <6> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + <2> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + <6> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + <6> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX + <2> <7> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + <2> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + <7> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + <7> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN + <2> <8> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + <2> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + <8> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + <8> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT + <2> <9> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + <2> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + <9> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + <9> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE + <3> <0> : "㉚" U325A # CIRCLED NUMBER THIRTY + <3> : "㉚" U325A # CIRCLED NUMBER THIRTY + <0> : "㉚" U325A # CIRCLED NUMBER THIRTY + : "㉚" U325A # CIRCLED NUMBER THIRTY + <3> <1> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE + <3> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE + <1> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE + : "㉛" U325B # CIRCLED NUMBER THIRTY ONE + <3> <2> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + <3> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + <3> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + <2> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + : "㉜" U325C # CIRCLED NUMBER THIRTY TWO + <3> <3> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE + <3> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE + <3> : "㉝" U325D # CIRCLED NUMBER THIRTY THREE + : "㉝" U325D # CIRCLED NUMBER THIRTY THREE + <3> <4> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR + <3> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR + <4> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR + : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR + <3> <5> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE + <3> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE + <5> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE + : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE + : "㉠" U3260 # CIRCLED HANGUL KIYEOK + : "㉡" U3261 # CIRCLED HANGUL NIEUN + : "㉢" U3262 # CIRCLED HANGUL TIKEUT + : "㉣" U3263 # CIRCLED HANGUL RIEUL + : "㉀" U3264 # CIRCLED HANGUL MIEUM + : "㉥" U3265 # CIRCLED HANGUL PIEUP + : "㉊" U3266 # CIRCLED HANGUL SIOS + : "㉧" U3267 # CIRCLED HANGUL IEUNG + : "㉚" U3268 # CIRCLED HANGUL CIEUC + : "㉩" U3269 # CIRCLED HANGUL CHIEUCH + : "㉪" U326A # CIRCLED HANGUL KHIEUKH + : "㉫" U326B # CIRCLED HANGUL THIEUTH + : "㉬" U326C # CIRCLED HANGUL PHIEUPH + : "㉭" U326D # CIRCLED HANGUL HIEUH + : "㉮" U326E # CIRCLED HANGUL KIYEOK A + : "㉯" U326F # CIRCLED HANGUL NIEUN A + : "㉰" U3270 # CIRCLED HANGUL TIKEUT A + : "㉱" U3271 # CIRCLED HANGUL RIEUL A + : "㉲" U3272 # CIRCLED HANGUL MIEUM A + : "㉳" U3273 # CIRCLED HANGUL PIEUP A + : "㉎" U3274 # CIRCLED HANGUL SIOS A + : "㉵" U3275 # CIRCLED HANGUL IEUNG A + : "㉶" U3276 # CIRCLED HANGUL CIEUC A + : "㉷" U3277 # CIRCLED HANGUL CHIEUCH A + : "㉞" U3278 # CIRCLED HANGUL KHIEUKH A + : "㉹" U3279 # CIRCLED HANGUL THIEUTH A + : "㉺" U327A # CIRCLED HANGUL PHIEUPH A + : "㉻" U327B # CIRCLED HANGUL HIEUH A + : "㊀" U3280 # CIRCLED IDEOGRAPH ONE + : "㊁" U3281 # CIRCLED IDEOGRAPH TWO + : "㊂" U3282 # CIRCLED IDEOGRAPH THREE + : "㊃" U3283 # CIRCLED IDEOGRAPH FOUR + : "㊄" U3284 # CIRCLED IDEOGRAPH FIVE + : "㊅" U3285 # CIRCLED IDEOGRAPH SIX + : "㊆" U3286 # CIRCLED IDEOGRAPH SEVEN + : "㊇" U3287 # CIRCLED IDEOGRAPH EIGHT + : "㊈" U3288 # CIRCLED IDEOGRAPH NINE + : "㊉" U3289 # CIRCLED IDEOGRAPH TEN + : "㊊" U328A # CIRCLED IDEOGRAPH MOON + : "㊋" U328B # CIRCLED IDEOGRAPH FIRE + : "㊌" U328C # CIRCLED IDEOGRAPH WATER + : "㊍" U328D # CIRCLED IDEOGRAPH WOOD + : "㊎" U328E # CIRCLED IDEOGRAPH METAL + : "㊏" U328F # CIRCLED IDEOGRAPH EARTH + : "㊐" U3290 # CIRCLED IDEOGRAPH SUN + : "㊑" U3291 # CIRCLED IDEOGRAPH STOCK + : "㊒" U3292 # CIRCLED IDEOGRAPH HAVE + : "㊓" U3293 # CIRCLED IDEOGRAPH SOCIETY + : "㊔" U3294 # CIRCLED IDEOGRAPH NAME + : "㊕" U3295 # CIRCLED IDEOGRAPH SPECIAL + : "㊖" U3296 # CIRCLED IDEOGRAPH FINANCIAL + : "㊗" U3297 # CIRCLED IDEOGRAPH CONGRATULATION + : "㊘" U3298 # CIRCLED IDEOGRAPH LABOR + : "㊙" U3299 # CIRCLED IDEOGRAPH SECRET + : "㊚" U329A # CIRCLED IDEOGRAPH MALE + : "㊛" U329B # CIRCLED IDEOGRAPH FEMALE + : "㊜" U329C # CIRCLED IDEOGRAPH SUITABLE + : "㊝" U329D # CIRCLED IDEOGRAPH EXCELLENT + : "㊞" U329E # CIRCLED IDEOGRAPH PRINT + : "㊟" U329F # CIRCLED IDEOGRAPH ATTENTION + : "㊠" U32A0 # CIRCLED IDEOGRAPH ITEM + : "㊡" U32A1 # CIRCLED IDEOGRAPH REST + : "㊢" U32A2 # CIRCLED IDEOGRAPH COPY + : "㊣" U32A3 # CIRCLED IDEOGRAPH CORRECT + : "㊀" U32A4 # CIRCLED IDEOGRAPH HIGH + : "㊥" U32A5 # CIRCLED IDEOGRAPH CENTRE + : "㊊" U32A6 # CIRCLED IDEOGRAPH LOW + : "㊧" U32A7 # CIRCLED IDEOGRAPH LEFT + : "㊚" U32A8 # CIRCLED IDEOGRAPH RIGHT + : "㊩" U32A9 # CIRCLED IDEOGRAPH MEDICINE + : "㊪" U32AA # CIRCLED IDEOGRAPH RELIGION + : "㊫" U32AB # CIRCLED IDEOGRAPH STUDY + : "㊬" U32AC # CIRCLED IDEOGRAPH SUPERVISE + : "㊭" U32AD # CIRCLED IDEOGRAPH ENTERPRISE + : "㊮" U32AE # CIRCLED IDEOGRAPH RESOURCE + : "㊯" U32AF # CIRCLED IDEOGRAPH ALLIANCE + : "㊰" U32B0 # CIRCLED IDEOGRAPH NIGHT + <3> <6> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX + <3> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX + <6> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX + : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX + <3> <7> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN + <3> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN + <7> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN + : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN + <3> <8> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT + <3> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT + <8> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT + : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT + <3> <9> : "㊎" U32B4 # CIRCLED NUMBER THIRTY NINE + <3> : "㊎" U32B4 # CIRCLED NUMBER THIRTY NINE + <9> : "㊎" U32B4 # CIRCLED NUMBER THIRTY NINE + : "㊎" U32B4 # CIRCLED NUMBER THIRTY NINE + <4> <0> : "㊵" U32B5 # CIRCLED NUMBER FORTY + <4> : "㊵" U32B5 # CIRCLED NUMBER FORTY + <0> : "㊵" U32B5 # CIRCLED NUMBER FORTY + : "㊵" U32B5 # CIRCLED NUMBER FORTY + <4> <1> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE + <4> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE + <1> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE + : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE + <4> <2> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + <4> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + <4> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + <2> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO + <4> <3> : "㊞" U32B8 # CIRCLED NUMBER FORTY THREE + <4> : "㊞" U32B8 # CIRCLED NUMBER FORTY THREE + <3> : "㊞" U32B8 # CIRCLED NUMBER FORTY THREE + : "㊞" U32B8 # CIRCLED NUMBER FORTY THREE + <4> <4> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR + <4> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR + <4> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR + : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR + <4> <5> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE + <4> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE + <5> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE + : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE + <4> <6> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX + <4> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX + <6> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX + : "㊻" U32BB # CIRCLED NUMBER FORTY SIX + <4> <7> : "㊌" U32BC # CIRCLED NUMBER FORTY SEVEN + <4> : "㊌" U32BC # CIRCLED NUMBER FORTY SEVEN + <7> : "㊌" U32BC # CIRCLED NUMBER FORTY SEVEN + : "㊌" U32BC # CIRCLED NUMBER FORTY SEVEN + <4> <8> : "㊜" U32BD # CIRCLED NUMBER FORTY EIGHT + <4> : "㊜" U32BD # CIRCLED NUMBER FORTY EIGHT + <8> : "㊜" U32BD # CIRCLED NUMBER FORTY EIGHT + : "㊜" U32BD # CIRCLED NUMBER FORTY EIGHT + <4> <9> : "㊟" U32BE # CIRCLED NUMBER FORTY NINE + <4> : "㊟" U32BE # CIRCLED NUMBER FORTY NINE + <9> : "㊟" U32BE # CIRCLED NUMBER FORTY NINE + : "㊟" U32BE # CIRCLED NUMBER FORTY NINE + <5> <0> : "㊿" U32BF # CIRCLED NUMBER FIFTY + <5> : "㊿" U32BF # CIRCLED NUMBER FIFTY + <0> : "㊿" U32BF # CIRCLED NUMBER FIFTY + : "㊿" U32BF # CIRCLED NUMBER FIFTY + : "㋐" U32D0 # CIRCLED KATAKANA A + : "㋑" U32D1 # CIRCLED KATAKANA I + : "㋒" U32D2 # CIRCLED KATAKANA U + : "㋓" U32D3 # CIRCLED KATAKANA E + : "㋔" U32D4 # CIRCLED KATAKANA O + : "㋕" U32D5 # CIRCLED KATAKANA KA + : "㋖" U32D6 # CIRCLED KATAKANA KI + : "㋗" U32D7 # CIRCLED KATAKANA KU + : "㋘" U32D8 # CIRCLED KATAKANA KE + : "㋙" U32D9 # CIRCLED KATAKANA KO + : "㋚" U32DA # CIRCLED KATAKANA SA + : "㋛" U32DB # CIRCLED KATAKANA SI + : "㋜" U32DC # CIRCLED KATAKANA SU + : "㋝" U32DD # CIRCLED KATAKANA SE + : "㋞" U32DE # CIRCLED KATAKANA SO + : "㋟" U32DF # CIRCLED KATAKANA TA + : "㋠" U32E0 # CIRCLED KATAKANA TI + : "㋡" U32E1 # CIRCLED KATAKANA TU + : "㋢" U32E2 # CIRCLED KATAKANA TE + : "㋣" U32E3 # CIRCLED KATAKANA TO + : "ã‹€" U32E4 # CIRCLED KATAKANA NA + : "㋥" U32E5 # CIRCLED KATAKANA NI + : "ã‹Š" U32E6 # CIRCLED KATAKANA NU + : "㋧" U32E7 # CIRCLED KATAKANA NE + : "ã‹š" U32E8 # CIRCLED KATAKANA NO + : "㋩" U32E9 # CIRCLED KATAKANA HA + : "㋪" U32EA # CIRCLED KATAKANA HI + : "㋫" U32EB # CIRCLED KATAKANA HU + : "㋬" U32EC # CIRCLED KATAKANA HE + : "㋭" U32ED # CIRCLED KATAKANA HO + : "㋮" U32EE # CIRCLED KATAKANA MA + : "㋯" U32EF # CIRCLED KATAKANA MI + : "㋰" U32F0 # CIRCLED KATAKANA MU + : "㋱" U32F1 # CIRCLED KATAKANA ME + : "㋲" U32F2 # CIRCLED KATAKANA MO + : "㋳" U32F3 # CIRCLED KATAKANA YA + : "ã‹Ž" U32F4 # CIRCLED KATAKANA YU + : "㋵" U32F5 # CIRCLED KATAKANA YO + : "㋶" U32F6 # CIRCLED KATAKANA RA + : "㋷" U32F7 # CIRCLED KATAKANA RI + : "ã‹ž" U32F8 # CIRCLED KATAKANA RU + : "㋹" U32F9 # CIRCLED KATAKANA RE + : "㋺" U32FA # CIRCLED KATAKANA RO + : "㋻" U32FB # CIRCLED KATAKANA WA + : "ã‹Œ" U32FC # CIRCLED KATAKANA WI + : "ã‹œ" U32FD # CIRCLED KATAKANA WE + : "ã‹Ÿ" U32FE # CIRCLED KATAKANA WO + : "יִ" UFB1D # HEBREW LETTER YOD WITH HIRIQ + : "ײַ" UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH + : "שׁ" UFB2A # HEBREW LETTER SHIN WITH SHIN DOT + : "שׂ" UFB2B # HEBREW LETTER SHIN WITH SIN DOT + : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT + : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT + : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT + : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT + : "אַ" UFB2E # HEBREW LETTER ALEF WITH PATAH + : "אָ" UFB2F # HEBREW LETTER ALEF WITH QAMATS + : "אּ" UFB30 # HEBREW LETTER ALEF WITH MAPIQ + : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH + : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH + : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH + : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH + : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH + : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH + : "﬎" UFB34 # HEBREW LETTER HE WITH MAPIQ + : "וּ" UFB35 # HEBREW LETTER VAV WITH DAGESH + : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH + : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH + : "ﬞ" UFB38 # HEBREW LETTER TET WITH DAGESH + : "ﬞ" UFB38 # HEBREW LETTER TET WITH DAGESH + : "יּ" UFB39 # HEBREW LETTER YOD WITH DAGESH + : "ךּ" UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH + : "כּ" UFB3B # HEBREW LETTER KAF WITH DAGESH + : "﬌" UFB3C # HEBREW LETTER LAMED WITH DAGESH + : "ײַ" UFB3E # HEBREW LETTER MEM WITH DAGESH + : "נּ" UFB40 # HEBREW LETTER NUN WITH DAGESH + : "סּ" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH + : "סּ" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH + : "ףּ" UFB43 # HEBREW LETTER FINAL PE WITH DAGESH + : "פּ" UFB44 # HEBREW LETTER PE WITH DAGESH + : "צּ" UFB46 # HEBREW LETTER TSADI WITH DAGESH + : "צּ" UFB46 # HEBREW LETTER TSADI WITH DAGESH + : "קּ" UFB47 # HEBREW LETTER QOF WITH DAGESH + : "קּ" UFB47 # HEBREW LETTER QOF WITH DAGESH + : "רּ" UFB48 # HEBREW LETTER RESH WITH DAGESH + : "שּ" UFB49 # HEBREW LETTER SHIN WITH DAGESH + : "תּ" UFB4A # HEBREW LETTER TAV WITH DAGESH + : "תּ" UFB4A # HEBREW LETTER TAV WITH DAGESH + : "וֹ" UFB4B # HEBREW LETTER VAV WITH HOLAM + : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE + : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE + : "כֿ" UFB4D # HEBREW LETTER KAF WITH RAFE + : "פֿ" UFB4E # HEBREW LETTER PE WITH RAFE + : "텞" U1D15E # MUSICAL SYMBOL HALF NOTE + : "텟" U1D15F # MUSICAL SYMBOL QUARTER NOTE + : "텠" U1D160 # MUSICAL SYMBOL EIGHTH NOTE + : "텠" U1D160 # MUSICAL SYMBOL EIGHTH NOTE + : "텡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE + : "텡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE + : "텢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE + : "텢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE + : "텣" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE + : "텣" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE + : "í…€" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + : "í…€" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + : "톻" U1D1BB # MUSICAL SYMBOL MINIMA + : "톌" U1D1BC # MUSICAL SYMBOL MINIMA BLACK + : "톜" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE + : "톜" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE + : "톟" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK + : "톟" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK + : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE + : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE + : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK + : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK diff -N -x '*CVS*' -r -u x11r680/xc/nls/XI18N_OBJS/Imakefile x11r682/xc/nls/XI18N_OBJS/Imakefile --- xc/nls/XI18N_OBJS/Imakefile 2004-04-23 20:44:34.000000000 +0200 +++ xc/nls/XI18N_OBJS/Imakefile 2005-01-25 03:03:01.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.1 2000/12/12 13:00:42 coskrey Exp $ -XCOMM $XdotOrg: xc/nls/XI18N_OBJS/Imakefile,v 1.2 2004/04/23 18:44:34 eich Exp $ +XCOMM $XdotOrg: xc/nls/XI18N_OBJS/Imakefile,v 1.2.4.1 2005/01/25 02:03:01 gisburn Exp $ @@ -70,6 +70,7 @@ XI18NTarget(en_US.UTF-8) XI18NTarget(ja_JP.UTF-8) XI18NTarget(ko_KR.UTF-8) +XI18NTarget(pt_BR.UTF-8) XI18NTarget(th_TH.UTF-8) XI18NTarget(zh_TW.UTF-8) #ifdef UXPArchitecture diff -N -x '*CVS*' -r -u x11r680/xc/nls/XI18N_OBJS/pt_BR.UTF-8 x11r682/xc/nls/XI18N_OBJS/pt_BR.UTF-8 --- xc/nls/XI18N_OBJS/pt_BR.UTF-8 1970-01-01 01:00:00.000000000 +0100 +++ xc/nls/XI18N_OBJS/pt_BR.UTF-8 2005-01-25 03:03:01.000000000 +0100 @@ -0,0 +1,7 @@ +# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME +# +# XI18N objects table for pt_BR.UTF-8 locale +# +XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open +XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister +XOM common/xomGeneric _XomGenericOpenOM # XOM_open diff -N -x '*CVS*' -r -u x11r680/xc/nls/XLC_LOCALE/Imakefile x11r682/xc/nls/XLC_LOCALE/Imakefile --- xc/nls/XLC_LOCALE/Imakefile 2004-04-23 20:44:34.000000000 +0200 +++ xc/nls/XLC_LOCALE/Imakefile 2005-01-25 03:03:01.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:59 cpqbld Exp $ -XCOMM $XdotOrg: xc/nls/XLC_LOCALE/Imakefile,v 1.2 2004/04/23 18:44:34 eich Exp $ +XCOMM $XdotOrg: xc/nls/XLC_LOCALE/Imakefile,v 1.2.4.1 2005/01/25 02:03:01 gisburn Exp $ @@ -70,6 +70,7 @@ LTarget(microsoft-cp1256) LTarget(mulelao-1) LTarget(nokhchi-1) +LTarget(pt_BR.UTF-8) LTarget(tatar-cyr) LTarget(th_TH) LTarget(th_TH.UTF-8) diff -N -x '*CVS*' -r -u x11r680/xc/nls/XLC_LOCALE/en_US.UTF-8 x11r682/xc/nls/XLC_LOCALE/en_US.UTF-8 --- xc/nls/XLC_LOCALE/en_US.UTF-8 2004-04-23 20:44:34.000000000 +0200 +++ xc/nls/XLC_LOCALE/en_US.UTF-8 2004-12-13 15:14:37.000000000 +0100 @@ -11,20 +11,9 @@ object_name generic -XCOMM fs0 class +XCOMM fs0 class (7 bit ASCII) fs0 { charset { - name ISO10646-1 - } - font { - primary ISO10646-1 - } -} -XCOMM We leave the legacy encodings in for the moment, because we don't -XCOMM have that many ISO10646 fonts yet. -XCOMM fs1 class (7 bit ASCII) -fs1 { - charset { name ISO8859-1:GL } font { @@ -32,8 +21,8 @@ vertical_rotate all } } -XCOMM fs2 class (ISO8859 families) -fs2 { +XCOMM fs1 class (ISO8859 families) +fs1 { charset { name ISO8859-1:GR } @@ -41,8 +30,8 @@ primary ISO8859-1:GR } } -XCOMM fs3 class (Kanji) -fs3 { +XCOMM fs2 class (Kanji) +fs2 { charset { name JISX0208.1983-0:GL } @@ -50,8 +39,8 @@ primary JISX0208.1983-0:GL } } -XCOMM fs4 class (Korean Character) -fs4 { +XCOMM fs3 class (Korean Character) +fs3 { charset { name KSC5601.1987-0:GL } @@ -59,8 +48,8 @@ primary KSC5601.1987-0:GL } } -XCOMM fs5 class (Chinese Han Character) -fs5 { +XCOMM fs4 class (Chinese Han Character) +fs4 { charset { name GB2312.1980-0:GL } @@ -68,8 +57,8 @@ primary GB2312.1980-0:GL } } -XCOMM fs6 class (Half Kana) -fs6 { +XCOMM fs5 class (Half Kana) +fs5 { charset { name JISX0201.1976-0:GR } @@ -78,6 +67,16 @@ vertical_rotate all } } +XCOMM ISO10646 should come last so the fonts above will actually be used +XCOMM fs6 class +fs6 { + charset { + name ISO10646-1 + } + font { + primary ISO10646-1 + } +} END XLC_FONTSET XCOMM diff -N -x '*CVS*' -r -u x11r680/xc/nls/XLC_LOCALE/pt_BR.UTF-8 x11r682/xc/nls/XLC_LOCALE/pt_BR.UTF-8 --- xc/nls/XLC_LOCALE/pt_BR.UTF-8 1970-01-01 01:00:00.000000000 +0100 +++ xc/nls/XLC_LOCALE/pt_BR.UTF-8 2005-02-01 04:17:00.000000000 +0100 @@ -0,0 +1,142 @@ +XCOMM XLocale Database Sample for pt_BR.UTF-8 +XCOMM +XCOMM Based on XLocale Database Sample for en_US.UTF-8 +XCOMM + +XCOMM +XCOMM XLC_FONTSET category +XCOMM +XLC_FONTSET + +on_demand_loading True + +object_name generic + +XCOMM fs0 class (7 bit ASCII) +fs0 { + charset { + name ISO8859-1:GL + } + font { + primary ISO8859-1:GL + vertical_rotate all + } +} +XCOMM fs1 class (ISO8859 families) +fs1 { + charset { + name ISO8859-1:GR + } + font { + primary ISO8859-1:GR + } +} +XCOMM fs2 class (Kanji) +fs2 { + charset { + name JISX0208.1983-0:GL + } + font { + primary JISX0208.1983-0:GL + } +} +XCOMM fs3 class (Korean Character) +fs3 { + charset { + name KSC5601.1987-0:GL + } + font { + primary KSC5601.1987-0:GL + } +} +XCOMM fs4 class (Chinese Han Character) +fs4 { + charset { + name GB2312.1980-0:GL + } + font { + primary GB2312.1980-0:GL + } +} +XCOMM fs5 class (Half Kana) +fs5 { + charset { + name JISX0201.1976-0:GR + } + font { + primary JISX0201.1976-0:GR + vertical_rotate all + } +} +XCOMM ISO10646 is last, per Roland Mainz in +XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896 +fs6 { + charset { + name ISO10646-1 + } + font { + primary ISO10646-1 + } +} +END XLC_FONTSET + +XCOMM +XCOMM XLC_XLOCALE category +XCOMM +XLC_XLOCALE + +encoding_name UTF-8 +mb_cur_max 6 +state_depend_encoding False + +XCOMM cs0 class +cs0 { + side GL:Default + length 1 + ct_encoding ISO8859-1:GL +} + +XCOMM cs1 class +cs1 { + side GR:Default + length 1 + ct_encoding ISO8859-1:GR +} + +XCOMM cs2 class +cs2 { + side GR + length 2 + ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\ + JISX0208.1983-1:GL; JISX0208.1983-1:GR +} + +XCOMM cs3 class +cs3 { + side GL + length 2 + ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\ + KSC5601.1987-1:GL; KSC5601.1987-1:GR +} + +XCOMM cs4 class +cs4 { + side GR + length 2 + ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR +} + +XCOMM cs5 class +cs5 { + side GR + length 1 + ct_encoding JISX0201.1976-0:GR +} + +XCOMM cs6 class +cs6 { + side none + ct_encoding ISO10646-1 +} + +END XLC_XLOCALE diff -N -x '*CVS*' -r -u x11r680/xc/nls/compose.dir x11r682/xc/nls/compose.dir --- xc/nls/compose.dir 2004-04-23 20:44:33.000000000 +0200 +++ xc/nls/compose.dir 2005-01-25 03:03:01.000000000 +0100 @@ -326,7 +326,7 @@ en_US.UTF-8/Compose: ph_PH.UTF-8 en_US.UTF-8/Compose: pl_PL.UTF-8 en_US.UTF-8/Compose: pp_AN.UTF-8 -en_US.UTF-8/Compose: pt_BR.UTF-8 +pt_BR.UTF-8/Compose: pt_BR.UTF-8 en_US.UTF-8/Compose: pt_PT.UTF-8 en_US.UTF-8/Compose: ro_RO.UTF-8 en_US.UTF-8/Compose: ru_RU.UTF-8 diff -N -x '*CVS*' -r -u x11r680/xc/nls/locale.dir x11r682/xc/nls/locale.dir --- xc/nls/locale.dir 2004-04-23 20:44:33.000000000 +0200 +++ xc/nls/locale.dir 2005-01-25 03:03:01.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/nls/locale.dir,v 1.2 2004/04/23 18:44:33 eich Exp $ +XCOMM $XdotOrg: xc/nls/locale.dir,v 1.2.4.1 2005/01/25 02:03:01 gisburn Exp $ XCOMM $Xorg: locale.dir,v 1.3 2000/08/17 19:46:48 cpqbld Exp $ XCOMM XCOMM This file contains locale database file names @@ -355,7 +355,7 @@ en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8 en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8 en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8 -en_US.UTF-8/XLC_LOCALE: pt_BR.UTF-8 +pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8 en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8 en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8 en_US.UTF-8/XLC_LOCALE: ru_RU.UTF-8 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Imakefile x11r682/xc/programs/Imakefile --- xc/programs/Imakefile 2004-09-02 03:10:29.000000000 +0200 +++ xc/programs/Imakefile 2005-01-24 06:01:54.000000000 +0100 @@ -56,7 +56,7 @@ XVINFOSRCDIR = xvinfo #endif XHOSTSRCDIR = xhost -#if BuildPlugin +#if BuildPlugin && BuildXaw XRXSRCDIR = xrx #endif XSMSRCDIR = xsm diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/GL/dri/dri.c x11r682/xc/programs/Xserver/GL/dri/dri.c --- xc/programs/Xserver/GL/dri/dri.c 2004-07-30 22:38:27.000000000 +0200 +++ xc/programs/Xserver/GL/dri/dri.c 2004-12-08 06:44:42.000000000 +0100 @@ -71,6 +71,8 @@ extern Bool noPanoramiXExtension; #endif +extern Bool noXFree86DRIExtension; + static int DRIScreenPrivIndex = -1; static int DRIWindowPrivIndex = -1; static unsigned long DRIGeneration = 0; @@ -129,6 +131,13 @@ DRIGeneration = serverGeneration; } + /* If the DRI extension is disabled, do not initialize the DRI */ + if (noXFree86DRIExtension) { + DRIDrvMsg(pScreen->myNum, X_WARNING, + "Direct rendering has been disabled.\n"); + return FALSE; + } + /* * If Xinerama is on, don't allow DRI to initialise. It won't be usable * anyway. diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Imakefile x11r682/xc/programs/Xserver/Imakefile --- xc/programs/Xserver/Imakefile 2004-09-01 02:59:17.000000000 +0200 +++ xc/programs/Xserver/Imakefile 2004-12-15 20:22:53.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $XdotOrg: xc/programs/Xserver/Imakefile,v 1.19 2004/09/01 00:59:17 kem Exp $ +XCOMM $XdotOrg: xc/programs/Xserver/Imakefile,v 1.19.2.1 2004/12/15 19:22:53 ago Exp $ XCOMM $Xorg: Imakefile,v 1.4 2001/03/14 18:42:02 pookie Exp $ /* * Server Master Makefile @@ -1019,7 +1019,8 @@ XWINOBJS = $(XWINDDXDIR)/stubs.o $(XWINDDXDIR)/XWin.res XWINLIBS = PreFbLibs $(XWINLIB) FbPostFbLibs $(XWINLIB) $(XWINLAYERLIB) \ $(SHADOW) $(XWINPARSERLIB) $(ROOTLESSLIB) -XWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XONLYLIB) $(SYSLIBS) -lgdi32 +XWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XONLYLIB) $(SYSLIBS) -lgdi32 \ + -lbinmode EXTRA_LDOPTIONS = -e _mainCRTStartup diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xext/saver.c x11r682/xc/programs/Xserver/Xext/saver.c --- xc/programs/Xserver/Xext/saver.c 2004-04-23 20:44:41.000000000 +0200 +++ xc/programs/Xserver/Xext/saver.c 2004-12-13 04:34:33.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/Xext/saver.c,v 1.2 2004/04/23 18:44:41 eich Exp $ */ +/* $XdotOrg: xc/programs/Xserver/Xext/saver.c,v 1.2.4.2 2004/12/13 03:34:33 gisburn Exp $ */ /* * $XConsortium: saver.c,v 1.12 94/04/17 20:59:36 dpw Exp $ * @@ -210,7 +210,7 @@ #define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr)(s)->devPrivates[ScreenPrivateIndex].ptr) #define SetScreenPrivate(s,v) ((s)->devPrivates[ScreenPrivateIndex].ptr = (pointer) v); -#define SetupScreen(s) ScreenSaverScreenPrivatePtr pPriv = GetScreenPrivate(s) +#define SetupScreen(s) ScreenSaverScreenPrivatePtr pPriv = (s ? GetScreenPrivate(s) : NULL) #define New(t) ((t *) xalloc (sizeof (t))) @@ -1185,6 +1185,7 @@ pPriv = GetScreenPrivate (pDraw->pScreen); if (pPriv && pPriv->attr && pPriv->attr->client == client) { + FreeResource (pPriv->attr->resource, AttrType); FreeScreenAttr (pPriv->attr); pPriv->attr = NULL; CheckScreenPrivate (pDraw->pScreen); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xext/xf86bigfont.c x11r682/xc/programs/Xserver/Xext/xf86bigfont.c --- xc/programs/Xserver/Xext/xf86bigfont.c 2004-04-23 20:44:41.000000000 +0200 +++ xc/programs/Xserver/Xext/xf86bigfont.c 2004-12-08 07:41:00.000000000 +0100 @@ -99,12 +99,12 @@ static unsigned int pagesize; +static Bool badSysCall = FALSE; + #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__) #include -static Bool badSysCall = FALSE; - static void SigSysHandler( int signo) @@ -471,13 +471,16 @@ if (nCharInfos > 0) { #ifdef HAS_SHM - pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex); + if (!badSysCall) + pDesc = (ShmDescPtr) FontGetPrivate(pFont, FontShmdescIndex); + else + pDesc = NULL; if (pDesc) { pCI = (xCharInfo *) pDesc->attach_addr; if (stuff_flags & XF86Bigfont_FLAGS_Shm) shmid = pDesc->shmid; } else { - if (stuff_flags & XF86Bigfont_FLAGS_Shm) + if (stuff_flags & XF86Bigfont_FLAGS_Shm && !badSysCall) pDesc = shmalloc(nCharInfos * sizeof(xCharInfo) + sizeof(CARD32)); if (pDesc) { @@ -522,7 +525,7 @@ } } #ifdef HAS_SHM - if (pDesc) { + if (pDesc && !badSysCall) { *(CARD32 *)(pCI + nCharInfos) = signature; if (!FontSetPrivate(pFont, FontShmdescIndex, pDesc)) { shmdealloc(pDesc); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xext/xf86vmode.c x11r682/xc/programs/Xserver/Xext/xf86vmode.c --- xc/programs/Xserver/Xext/xf86vmode.c 2004-04-23 20:44:41.000000000 +0200 +++ xc/programs/Xserver/Xext/xf86vmode.c 2004-12-15 06:01:25.000000000 +0100 @@ -29,7 +29,7 @@ from Kaleb S. KEITHLEY */ -/* $XdotOrg: xc/programs/Xserver/Xext/xf86vmode.c,v 1.2 2004/04/23 18:44:41 eich Exp $ */ +/* $XdotOrg: xc/programs/Xserver/Xext/xf86vmode.c,v 1.2.4.1 2004/12/15 05:01:25 gisburn Exp $ */ /* $Xorg: xf86vmode.c,v 1.3 2000/08/17 19:47:59 cpqbld Exp $ */ /* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */ @@ -52,6 +52,8 @@ #include "xf86_ansic.h" #endif +#define DEFAULT_XF86VIDMODE_VERBOSITY 3 + static int VidModeErrorBase; static int VidModeGeneration = 0; static int VidModeClientPrivateIndex; @@ -468,7 +470,7 @@ rep.vtotal = VidModeGetModeValue(mode, VIDMODE_V_TOTAL); rep.flags = VidModeGetModeValue(mode, VIDMODE_FLAGS); - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("GetModeLine - scrn: %d clock: %ld\n", stuff->screen, (unsigned long)rep.dotclock); ErrorF("GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -676,7 +678,7 @@ stuff->after_vtotal = oldstuff->after_vtotal; stuff->after_flags = oldstuff->after_flags; } - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("AddModeLine - scrn: %d clock: %ld\n", (int)stuff->screen, (unsigned long)stuff->dotclock); ErrorF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -787,7 +789,7 @@ VidModeAddModeline(stuff->screen, mode); - if (xf86GetVerbosity() > 1) + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) ErrorF("AddModeLine - Succeeded\n"); return client->noClientException; } @@ -824,7 +826,7 @@ stuff->flags = oldstuff->flags; stuff->privsize = oldstuff->privsize; } - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("DeleteModeLine - scrn: %d clock: %ld\n", (int)stuff->screen, (unsigned long)stuff->dotclock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -843,7 +845,7 @@ len = client->req_len - (sizeof(xXF86VidModeDeleteModeLineReq) >> 2); } if (len != stuff->privsize) { - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("req_len = %ld, sizeof(Req) = %d, privsize = %ld, " "len = %d, length = %d\n", (unsigned long)client->req_len, @@ -859,7 +861,7 @@ if (!VidModeGetCurrentModeline(stuff->screen, &mode, &dotClock)) return BadValue; - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("Checking against clock: %d (%d)\n", VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -882,7 +884,7 @@ return BadValue; do { - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("Checking against clock: %d (%d)\n", VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -900,7 +902,7 @@ if ((VidModeGetDotClock(stuff->screen, stuff->dotclock) == dotClock) && MODEMATCH(mode, stuff)) { VidModeDeleteModeline(stuff->screen, mode); - if (xf86GetVerbosity()) + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) ErrorF("DeleteModeLine - Succeeded\n"); return(client->noClientException); } @@ -940,7 +942,7 @@ stuff->flags = oldstuff->flags; stuff->privsize = oldstuff->privsize; } - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", (int)stuff->screen, stuff->hdisplay, stuff->hsyncstart, stuff->hsyncend, stuff->htotal); @@ -1028,7 +1030,7 @@ VidModeSetCrtcForMode(stuff->screen, mode); VidModeSwitchMode(stuff->screen, mode); - if (xf86GetVerbosity() > 1) + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) ErrorF("ModModeLine - Succeeded\n"); return(client->noClientException); } @@ -1066,7 +1068,7 @@ stuff->flags = oldstuff->flags; stuff->privsize = oldstuff->privsize; } - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("ValidateModeLine - scrn: %d clock: %ld\n", (int)stuff->screen, (unsigned long)stuff->dotclock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -1146,7 +1148,7 @@ swapl(&rep.status, n); } WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), (char *)&rep); - if (xf86GetVerbosity() > 1) + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) ErrorF("ValidateModeLine - Succeeded (status = %d)\n", status); return(client->noClientException); } @@ -1200,7 +1202,7 @@ stuff->flags = oldstuff->flags; stuff->privsize = oldstuff->privsize; } - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("SwitchToMode - scrn: %d clock: %ld\n", (int)stuff->screen, (unsigned long)stuff->dotclock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -1235,7 +1237,7 @@ return BadValue; do { - if (xf86GetVerbosity() > 1) { + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ErrorF("Checking against clock: %d (%d)\n", VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", @@ -1256,7 +1258,7 @@ if (!VidModeSwitchMode(stuff->screen, mode)) return BadValue; - if (xf86GetVerbosity() > 1) + if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) ErrorF("SwitchToMode - Succeeded\n"); return(client->noClientException); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/XpConfig/Imakefile x11r682/xc/programs/Xserver/XpConfig/Imakefile --- xc/programs/Xserver/XpConfig/Imakefile 2004-04-23 20:45:37.000000000 +0200 +++ xc/programs/Xserver/XpConfig/Imakefile 2005-01-25 03:03:01.000000000 +0100 @@ -468,9 +468,14 @@ pt.ISO8859-15 \ pt_BR \ pt_BR.ISO8859-1 \ - pt_BR.UTF-8 \ + pt_BR.ISO-8859-1 \ + pt_BR.ISO_8859-1 \ pt_BR.iso88591 \ + pt_BR.iso885915 \ + pt_BR.88591 \ + pt_BR.88591.en \ pt_BR.utf8 \ + pt_BR.UTF-8 \ pt_PT \ pt_PT.ISO8859-1 \ pt_PT.ISO8859-15 \ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Imakefile x11r682/xc/programs/Xserver/Xprint/Imakefile --- xc/programs/Xserver/Xprint/Imakefile 2004-04-26 13:07:03.000000000 +0200 +++ xc/programs/Xserver/Xprint/Imakefile 2004-12-15 08:38:28.000000000 +0100 @@ -126,13 +126,11 @@ DependTarget() -MANDIR = $(MISCMANDIR) -MANSUFFIX = $(MISCMANSUFFIX) -InstallManPage(Xprint,$(MANDIR)) +InstallManPage(Xprt,$(MANDIR)) #ifdef HasDocBookTools -all:: Xprint.man Xprint.html +all:: Xprt.man Xprt.html -ConvertDocBookToManPage(Xprint.sgml, Xprint.man) -ConvertDocBookToHTML(Xprint.sgml, Xprint.html) +ConvertDocBookToManPage(Xprt.sgml, Xprt.man) +ConvertDocBookToHTML(Xprt.sgml, Xprt.html) #endif /* HasDocBookTools */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Init.c x11r682/xc/programs/Xserver/Xprint/Init.c --- xc/programs/Xserver/Xprint/Init.c 2004-06-24 08:26:27.000000000 +0200 +++ xc/programs/Xserver/Xprint/Init.c 2004-12-13 06:12:12.000000000 +0100 @@ -163,6 +163,7 @@ PixmapFormatRec PSPixmapFormats[] = { { 1, 1, BITMAP_SCANLINE_PAD }, { 8, 8, BITMAP_SCANLINE_PAD }, + { 12, 16, BITMAP_SCANLINE_PAD }, { 24, 32, BITMAP_SCANLINE_PAD } }; @@ -1217,9 +1218,9 @@ * calling XpContextOfClient (in Xserver/Xext/xprint.c) to determine * the context associated with the client, and then queries the context's * attributes to determine whether the bitmap fonts should be visible. - * It looks at the value of the xp-listfonts-mode document/page attribute to + * It looks at the value of the xp-listfonts-modes document/page attribute to * see if xp-list-glyph-fonts has been left out of the mode list. Only - * if the xp-listfonts-mode attribute exists, and it does not contain + * if the xp-listfonts-modes attribute exists, and it does not contain * xp-list-glyph-fonts does this function return FALSE. In any other * case the funtion returns TRUE, indicating that the bitmap fonts * should be visible to the client. @@ -1238,10 +1239,10 @@ * Check the page attributes, and if it's not defined there, then * check the document attributes. */ - mode = XpGetOneAttribute(pContext, XPPageAttr, "xp-listfonts-mode"); + mode = XpGetOneAttribute(pContext, XPPageAttr, "xp-listfonts-modes"); if(!mode || !strlen(mode)) { - mode = XpGetOneAttribute(pContext, XPDocAttr, "xp-listfonts-mode"); + mode = XpGetOneAttribute(pContext, XPDocAttr, "xp-listfonts-modes"); if(!mode || !strlen(mode)) return TRUE; } @@ -1251,14 +1252,21 @@ return TRUE; } + /* * XpClientIsPrintClient is called by the font code to find out if * a particular client has set a context which references a printer - * which utilizes a particular font path. This function works by - * calling XpContextOfClient (in Xserver/Xext/xprint.c) to determine - * the context associated with the client, and then looks up the - * font directory for the context. The font directory is then compared - * with the directory specified in the FontPathElement which is passed in. + * which utilizes a particular font path. + * This function works by calling XpContextOfClient + * (in Xserver/Xext/xprint.c) to determine the context associated with + * the client and then looks at the value of the xp-listfonts-modes + * document/page attribute to see if xp-list-internal-printer-fonts has + * been left out of the mode list. + * If the xp-listfonts-modes attribute exists, and it does not contain + * xp-list-internal-printer-fonts this function returns FALSE. + * Otherwise it looks up the font directory for the context. The font + * directory is then compared with the directory specified in the + * FontPathElement which is passed in. */ Bool XpClientIsPrintClient( @@ -1266,11 +1274,28 @@ FontPathElementPtr fpe) { XpContextPtr pContext; + char *mode; char *modelID, *fontDir; if(!(pContext = XpContextOfClient(client))) return FALSE; + /* + * Check the page attributes, and if it's not defined there, then + * check the document attributes. + */ + mode = XpGetOneAttribute(pContext, XPPageAttr, "xp-listfonts-modes"); + if(!mode || !strlen(mode)) + { + mode = XpGetOneAttribute(pContext, XPDocAttr, "xp-listfonts-modes"); + } + + if(mode && strlen(mode)) + { + if(!strstr(mode, "xp-list-internal-printer-fonts")) + return FALSE; + } + if (!fpe) return TRUE; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Oid.c x11r682/xc/programs/Xserver/Xprint/Oid.c --- xc/programs/Xserver/Xprint/Oid.c 2004-04-23 20:57:32.000000000 +0200 +++ xc/programs/Xserver/Xprint/Oid.c 2004-12-13 06:30:48.000000000 +0100 @@ -2104,16 +2104,16 @@ { switch(notify) { - case XPOID_NOTIFY_UNSUPPORTED: - return (const char*)NULL; - break; - case XPOID_NOTIFY_NONE: - return NOTIFY_NONE_STR; - break; - case XPOID_NOTIFY_EMAIL: - return NOTIFY_EMAIL_STR; - break; + case XPOID_NOTIFY_NONE: + return NOTIFY_NONE_STR; + case XPOID_NOTIFY_EMAIL: + return NOTIFY_EMAIL_STR; + case XPOID_NOTIFY_UNSUPPORTED: + return (const char *)NULL; } + + ErrorF("XpOidNotifyString: Unsupported notify=%ld\n", (long)notify); + return (const char *)NULL; } /* diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Util.c x11r682/xc/programs/Xserver/Xprint/Util.c --- xc/programs/Xserver/Xprint/Util.c 2004-04-23 20:57:32.000000000 +0200 +++ xc/programs/Xserver/Xprint/Util.c 2005-01-24 04:39:28.000000000 +0100 @@ -141,30 +141,6 @@ return string; } -/* - * ExecCommand takes two character pointers - the command to execute, - * and the "argv" style NULL-terminated vector of arguments for the command. - * We wait for the command to terminate before continuing to ensure that - * we don't delete the job file before the spooler has made a copy. - */ -void -ExecCommand( - char *pCommand, - char **argVector) -{ - pid_t childPid; - int status; - - if((childPid = fork()) == 0) - { - execv(pCommand, argVector); - } - else - { - (void) waitpid(childPid, &status, 0); - } - return; -} /* * TransferBytes reads numBytes of data from pSrcFile and writes them diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprint.html x11r682/xc/programs/Xserver/Xprint/Xprint.html --- xc/programs/Xserver/Xprint/Xprint.html 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/Xserver/Xprint/Xprint.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,296 +0,0 @@ -Xprint

      Name

      Xprint — The "X print service" - a portable, network-transparent printing system based on the X11 protocol

      Synopsis

      Xprint is a very flexible, extensible, scaleable, client/server - print system based on ISO 10175 (and some other specs) and the X11 - rendering protocol. - Using Xprint an application can search, query and use devices like - printers, FAX machines or create documents in formats like PDF. - In particular, an application can seek a printer, query supported - attributes (like paper size, trays, fonts etc.), configure the printer - device to match it’s needs and print on it like on any other X device - reusing parts of the code which is used for the video card Xserver. -

      OVERVIEW

      - The "X Print Service" technology allows X rendering to devices such as - printers and fax. Most of the service is available in the X11 - technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). - Modifications have also been made to the LessTif/Motif/Qt technology - stacks to support Xprint. -

      - The Xp portion consists of: -

      • Xp Extension for the X-Server (included in the X-Server Xprt)

      • Xp Extension API for the client side (libXp/libXprintUtils)

      • PCL ddx driver that converts core X to native PCL

      • PDF ddx driver that converts core X to native PDF

      • PostScript ddx driver that converts core X to native PostScript

      • Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters

      - From an X clients perspective, it can attach to one of two nearly - identical X-Servers, a "Video" X-Server, and a "Print" X-Server - which has the additional Xp capability but otherwise looks and - behaves the same. -

      HOW THE X PRINT SERVICE WORKS

      - The X Print Service expands on the traditional X-Server and Xlib world - in four ways. - -

      1. - Most obvious is the use of "print ddx drivers" instead of - "video ddx drivers". While a video ddx driver modifies pixels - in a video frame buffer, a print ddx driver generates "page - description language (PDL)" output (such as PCL, PDF or PostScript) - or sends the print rendering instructions to a platform-specific - print API (like Win32/GDI). -

        - Once a print ddx driver generates PDL output, it can be sent to - a spooler such as lp(1) - or retrieved by the client (to implement functionality like "print-to-file"). -

        - Though not currently done, a single X-Server can support both - print and video ddx drivers. -

      2. - Since printers support "paged" output, unlike video, a portion - of the Xp Extension supports APIs to delineate printed output. - For example, XpStartPage and XpEndPage tell the X-Server where - a physical page starts and ends in an otherwise continuous - stream of X rendering primitives. Likewise, XpStartJob and - XpEndJob determine when a collection of pages starts and ends. - XpEndJob typically causes the generated PDL to be submitted to - a spooler, such as lp(1). -

      3. - Since printers have extensive capabilities, another portion of - the Xp Extension supports APIs to manipulate "print contexts". -

        - Once a printer is selected using the Xp Extension API, a print - context to represent it can be created. A print context - embodies the printer selected - it contains the printer's - default capabilities, selectable range of capabilities, - printer state, and generated output. Some "attributes" within - the print context can be modified by the user, and the - X-Server and print ddx driver will react accordingly. For - example, the attribute "content-orientation" can be set to - "landscape" or "portrait" (if the printer supports these - values - which can be queried using the Xprint API as well). -

      4. - Since printers can have "built in" fonts, the Xp Extension in - the X-Server works with the print ddx drivers to make - available (for printing only) additional fonts on a per print - context basis. -

        - When a print context is created and set for a given printer, - the X font calls may be able to access additional printer - fonts. To do this (typically), the X-Server must have access - to "printer metric files" (.pmf) that describe at minimum the - metrics of the built in fonts. -

      USAGE

      - There are three tasks to start the X Print Service: -

      1. configuring the X Print Server,

      2. starting the X Print Service

      3. configuring the user session so that clients can find the running X Print Service

      - The tasks are described in detail below. -

      SERVER CONFIGURATION

      - The X Print Server (Xprt) can read a number of configuration files which - control its behavior and support for printers. Each vendor platform has - a default location for this information. Xprt can also read the - environment variable XPCONFIGDIR to locate alternate configuration - directories. Common settings include: - -

      export XPCONFIGDIR=/X11/lib/X11/XpConfig/
      export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/

      - Xprt has many built-in defaults, and lacking any configuration files, - will immediately try to support all printers visible via lpstat(1). -

      - In order of importance for configuration by a system administrator, the - configuration files for a "C" locale are as follows (see Xprt(1x) for more - details (including support for non-"C" locales)): -

      ${XPCONFIGDIR}/C/print/Xprinters

      - 'Xprinters' is the top most configuration file. It tells - Xprt which specific printer names (e.g. mylaser) should - be supported, and whether lpstat(1) or other commands - should be used to automatically supplement the list of - printers. -

      ${XPCONFIGDIR}/C/print/attributes/printer

      - The 'printer' file maps printer names to model - configurations (see 'model-config' below). For example, - "mylaser" could be mapped to a "HPDJ1600C", and all other - arbitrary printers could be mapped to a default, such as - "HPLJ4SI". When depending on lpstat(1) in the Xprinters - file, setting up defaults in 'printer' becomes all the - more important. -

      ${XPCONFIGDIR}/C/print/attributes/document

      - The 'document' file specifies the initial document values - for any print jobs. For example, which paper tray to - use, what default resolution, etc. -

      ${XPCONFIGDIR}/C/print/attributes/job

      - The 'job' file specifies the initial job values for any - print jobs. For example, "notification-profile" can be - set so that when a print job is successfully sent to a - printer, e-mail is sent to the user. -

      ${XPCONFIGDIR}/C/print/models/PSdefault/model-config, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf

      - The 'model-config' file has attributes that describe the - printer model’s capabilities and default settings. - Printer model fonts may also be present. The model-config - file also identifies the print ddx driver to be used. - - For each printer model supported, a complete hierarchy of - files should exist. In most cases, these files do not - need to be modified. -

      ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl, ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf, ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript

      - The print ddx drivers can have highly specific - configuration files to control their behavior. In most - cases, these files do not need to be modified. -

      - - More information in how to configure and customize the X print server can be found in the - Xprt(1x) - manual page. -

      STARTING UP

      - The summary checklist for starting the X Print Service is as follows: - -

      1. - Choose an execution model for the X Print Service. The X - Print Service can be run on a per-user session basis, per - machine basis, or can be run on a few machines globally - available to a number of users. -

      2. - If print jobs are to be submitted to a spooler (almost always - the case), make sure all needed printers are available to the - spooler subsystem (most often lp(1)) - on the same machine running the X Print Service. -

      3. - Configure the X Print Server. See ``X Print Server - Configuration''. -

      4. - Depending on #1, start the X Print Server process "Xprt", and - then the toolkit-specific Print Dialog Manager Daemon process - (such as CDEnext's "dtpdmd") at the appropriate times. - Note that libXprintUtils-based applications/toolkits do not need - a Print Dialog Manager Daemon process to use Xprint. -

      - The details are described below. -

      - Because the X Print Service is based on X, it can be easily distributed. - The most significant factors in which execution model to choose will be - driven by: -

      • - how many printers will be accessable through the printer - subsystem on any given machine. A system administrator may - choose to cluster printers on a few given machines, or - scatter them across an organization and possibly make - extensive use of remote spoolers to make them globally - available. -

      • - how many machines will need a copy of the X Print Server - configuration files. The files have been architected so - that one super-set version of them can be maintained and - distributed (e.g. via NFS), and a per-machine or per-user - version of the `Xprinters' is all that is needed to have the - appropriate information in them utilized or ignored. -

      • - how many users can demand services from a given X Print - Service. -

      - - With the above in mind, some obvious execution models include: -

      • - Global - in this model, the system administrator is choosing - to run the X Print Service on a *few* select machines with - appropriate printers configured, and allow clients access to - the global resource. This can centralize the administration - of printers and configuration files, but may have to be - monitored for performance loading. -

        - Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). -

      • - Per-machine - every machine with potential X Print Service - users would run the service. Printer and configuration file - administration is decentralized, and usage would be limited - to the users on the machine. -

        - Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). -

      • - Per-user session - every user would run an entire X Print - Service for themselves. In the future, the Video X Server - normally started may contain Print X Server capability, so - this model becomes very natural. -

        - Startup would likely be done at session login or by - launching actions or processes manually once the user - logs in. Note: Deamons like "dtpdmd" must be started after Xprt. -

      - Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): -

      1. [machineA] % Xprt [-XpFile Xprinters file] [:dispNum] 

        - Note that Xprt will look for configuration files in either - a default location or where XPCONFIGDIR points. -

        -XpFile specifies an alternate `Xprinters' file, rather - than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. -

      2. [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] 

        - The dtpdmd will maintain an X-Selection on the X-Server, - and will start dtpdm's as required to service requests. -

      - In all but the per-user session model, the machine running the dtpdmd - (thus dtpdm's) will need display authorization to the users video - display. -

      CLIENT CONFIGURATION

      - Once a X Print Server and dtpdmd have been started -- many of them - in some cases -- clients will need to find and use them. There are - two mechanisms that allow clients to discover X Print Servers and - printers. - -

      • - "X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print - applications, the following notation is understood: -

        printer_name@machine[:dispNum]

        - For example: -

        colorlj7@printhub:2

        - In the above example, the X Print Server running at `printhub:2' - is assumed to support the printer named `colorlj7'. -

      • ${XPSERVERLIST} - assuming usage of the DtPrint print dialogs, - the environment variable ${XPSERVERLIST} can contain a list - of X Print Servers. For example: -

        XPSERVERLIST="printhub:2 printhub:3 otherdept:0"

        - Then in the dialogs, only a printer name needs to be entered. - The dialog will then search the X Print Servers in ${XPSERVERLIST} - for a server than supports the printer, and then establish - contact. -

      END-USER SEQUENCE

      - From most CDEnext applications, printing is accomplished by bringing - down the File menu and selecting Print.... This will result in - the DtPrintSetupBox dialog, which will request the name of a printer, - and offer limited capability to configure print options (e.g. number - of copies). If the user wishes, they can select Setup..., which - will start a dtpdm capable of modifying additional print options. - Finally, the user should select Print. -

      ENVIRONMENT

      ${XPCONFIGDIR}

      This environment variable points to the root - of the Xprint server configuration directory hierarchy. - If the variable is not defined, the default - path is be assumed. The default path may be - /usr/X11R6/lib/X11/xserver/, - /usr/lib/X11/xserver/, - /usr/share/Xprint/xserver/ or - /usr/openwin/server/etc/XpConfig, depending on the - system, and may be configured in /etc/init.d/xprint.

      ${LANG}

      - This environment variable selects the locale settings used by the Xprint server. - Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) - which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). - If ${LANG} is not set "C" is assumed. -

      ${XPSERVERLIST}

      The environment variable ${XPSERVERLIST} contains a list - of display identifiers (separated by whitespace) which tell an - application where it can find the Xprint servers. Usually - ${XPSERVERLIST} is set by the profile startup scripts (e.g. - /etc/profile or /etc/profile.d/xprint.sh) using the output of - /etc/init.d/xprint get_xpserverlist.

      Example: -

      -		export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`"

      Alternatively ${XPSERVERLIST} can be set - manually. Example:

      -		export XPSERVERLIST="littlecat:80 bitdog:72"

      - instructs an application to find an Xprint server at display - 80 on the machine "littlecat" and at display 72 on the - machine bigdog. -

      ${XPRINTER}

      The environment variable ${XPRINTER} - defines the default printer used by print - applications. The syntax is either - printername or - printername@display.

      Examples: -

      XPRINTER=ps003

      - tells an application to look for the - first printer named "ps003" on all Xprint - servers.

      XPRINTER=hplaser19@littlecat:80

      - tells an application to use the printer "hplaser19" - on the Xprint server at display - "littlecat:80".

      If ${XPRINTER} is not set the applications - will examine the values of the ${PDPRINTER}, - ${LPDEST}, and - ${PRINTER} environment variables (in that order). -

      SEE ALSO

      X11(7), xplsprinters(1x), xprehashprinterlist(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      AUTHORS

      - This manual page was written by - Roland Mainz based on the original X11R6.6 - xc/programs/Xserver/XpConfig/README. -

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprint.man x11r682/xc/programs/Xserver/Xprint/Xprint.man --- xc/programs/Xserver/Xprint/Xprint.man 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/Xserver/Xprint/Xprint.man 1970-01-01 01:00:00.000000000 +0100 @@ -1,415 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "Xprint" "__miscmansuffix__" "29 June 2004" "" "" -.SH NAME -Xprint \- The \&"X print service\&" - a portable, network-transparent printing system based on the X11 protocol -.SH SYNOPSIS -.PP -Xprint is a very flexible, extensible, scaleable, client/server -print system based on ISO 10175 (and some other specs) and the X11 -rendering protocol. -Using Xprint an application can search, query and use devices like -printers, FAX machines or create documents in formats like PDF. -In particular, an application can seek a printer, query supported -attributes (like paper size, trays, fonts etc.), configure the printer -device to match its needs and print on it like on any other X device -reusing parts of the code which is used for the video card Xserver. -.SH "OVERVIEW" -.PP -The "X Print Service" technology allows X rendering to devices such as -printers and fax. Most of the service is available in the X11 -technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). -Modifications have also been made to the LessTif/Motif/Qt technology -stacks to support Xprint. -.PP -The Xp portion consists of: -.TP 0.2i -\(bu -Xp Extension for the X-Server (included in the X-Server Xprt) -.TP 0.2i -\(bu -Xp Extension API for the client side (libXp/libXprintUtils) -.TP 0.2i -\(bu -PCL ddx driver that converts core X to native PCL -.TP 0.2i -\(bu -PDF ddx driver that converts core X to native PDF -.TP 0.2i -\(bu -PostScript ddx driver that converts core X to native PostScript -.TP 0.2i -\(bu -Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters -.PP -From an X clients perspective, it can attach to one of two nearly -identical X-Servers, a "Video" X-Server, and a "Print" X-Server -which has the additional Xp capability but otherwise looks and -behaves the same. -.SH "HOW THE X PRINT SERVICE WORKS" -.PP -The X Print Service expands on the traditional X-Server and Xlib world -in four ways. -.TP 1. -Most obvious is the use of "print ddx drivers" instead of -"video ddx drivers". While a video ddx driver modifies pixels -in a video frame buffer, a print ddx driver generates "page -description language (PDL)" output (such as PCL, PDF or PostScript) -or sends the print rendering instructions to a platform-specific -print API (like Win32/GDI). - -Once a print ddx driver generates PDL output, it can be sent to -a spooler such as \fBlp\fR(1) -or retrieved by the client (to implement functionality like "print-to-file"). - -Though not currently done, a single X-Server can support both -print and video ddx drivers. -.TP 2. -Since printers support "paged" output, unlike video, a portion -of the Xp Extension supports APIs to delineate printed output. -For example, \fBXpStartPage\fR and \fBXpEndPage\fR tell the X-Server where -a physical page starts and ends in an otherwise continuous -stream of X rendering primitives. Likewise, \fBXpStartJob\fR and -\fBXpEndJob\fR determine when a collection of pages starts and ends. -\fBXpEndJob\fR typically causes the generated PDL to be submitted to -a spooler, such as \fBlp\fR(1). -.TP 3. -Since printers have extensive capabilities, another portion of -the Xp Extension supports APIs to manipulate "print contexts". - -Once a printer is selected using the Xp Extension API, a print -context to represent it can be created. A print context -embodies the printer selected - it contains the printer's -default capabilities, selectable range of capabilities, -printer state, and generated output. Some "attributes" within -the print context can be modified by the user, and the -X-Server and print ddx driver will react accordingly. For -example, the attribute "content-orientation" can be set to -"landscape" or "portrait" (if the printer supports these -values - which can be queried using the Xprint API as well). -.TP 4. -Since printers can have "built in" fonts, the Xp Extension in -the X-Server works with the print ddx drivers to make -available (for printing only) additional fonts on a per print -context basis. - -When a print context is created and set for a given printer, -the X font calls may be able to access additional printer -fonts. To do this (typically), the X-Server must have access -to "printer metric files" (.pmf) that describe at minimum the -metrics of the built in fonts. -.SH "USAGE" -.PP -There are three tasks to start the X Print Service: -.TP 1. -configuring the X Print Server, -.TP 2. -starting the X Print Service -.TP 3. -configuring the user session so that clients can find the running X Print Service -.PP -The tasks are described in detail below. -.SH "SERVER CONFIGURATION" -.PP -The X Print Server (Xprt) can read a number of configuration files which -control its behavior and support for printers. Each vendor platform has -a default location for this information. Xprt can also read the -environment variable \fBXPCONFIGDIR\fR to locate alternate configuration -directories. Common settings include: - -export XPCONFIGDIR=/X11/lib/X11/XpConfig/ - -export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/ -.PP -Xprt has many built-in defaults, and lacking any configuration files, -will immediately try to support all printers visible via \fBlpstat\fR(1). -.PP -In order of importance for configuration by a system administrator, the -configuration files for a "C" locale are as follows (see \fBXprt\fR(__mansuffix__) for more -details (including support for non-"C" locales)): -.TP -\fB\fI${XPCONFIGDIR}/C/print/Xprinters\fB\fR -\&'Xprinters' is the top most configuration file. It tells -Xprt which specific printer names (e.g. mylaser) should -be supported, and whether \fBlpstat\fR(1) or other commands -should be used to automatically supplement the list of -printers. -.TP -\fB\fI${XPCONFIGDIR}/C/print/attributes/printer\fB\fR -The 'printer' file maps printer names to model -configurations (see 'model-config' below). For example, -"mylaser" could be mapped to a "HPDJ1600C", and all other -arbitrary printers could be mapped to a default, such as -"HPLJ4SI". When depending on \fBlpstat\fR(1) in the Xprinters -file, setting up defaults in 'printer' becomes all the -more important. -.TP -\fB\fI${XPCONFIGDIR}/C/print/attributes/document\fB\fR -The 'document' file specifies the initial document values -for any print jobs. For example, which paper tray to -use, what default resolution, etc. -.TP -\fB\fI${XPCONFIGDIR}/C/print/attributes/job\fB\fR -The 'job' file specifies the initial job values for any -print jobs. For example, "notification-profile" can be -set so that when a print job is successfully sent to a -printer, e-mail is sent to the user. -.TP -\fB\fI${XPCONFIGDIR}/C/print/models/PSdefault/model-config\fB\fR -.TP -\fB\fI${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir\fB\fR -.TP -\fB\fI${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf\fB\fR -.TP -\fB\fI${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf\fB\fR -The 'model-config' file has attributes that describe the -printer models capabilities and default settings. -Printer model fonts may also be present. The model-config -file also identifies the print ddx driver to be used. -For each printer model supported, a complete hierarchy of -files should exist. In most cases, these files do not -need to be modified. -.TP -\fB\fI${XPCONFIGDIR}/C/print/ddx-config/raster/pcl\fB\fR -.TP -\fB\fI${XPCONFIGDIR}/C/print/ddx-config/raster/pdf\fB\fR -.TP -\fB\fI${XPCONFIGDIR}/C/print/ddx-config/raster/postscript\fB\fR -The print ddx drivers can have highly specific -configuration files to control their behavior. In most -cases, these files do not need to be modified. -More information in how to configure and customize the X print server can be found in the -\fBXprt\fR(__mansuffix__) -manual page. -.SH "STARTING UP" -.PP -The summary checklist for starting the X Print Service is as follows: -.TP 1. -Choose an execution model for the X Print Service. The X -Print Service can be run on a per-user session basis, per -machine basis, or can be run on a few machines globally -available to a number of users. -.TP 2. -If print jobs are to be submitted to a spooler (almost always -the case), make sure all needed printers are available to the -spooler subsystem (most often \fBlp\fR(1)) -on the same machine running the X Print Service. -.TP 3. -Configure the X Print Server. See ``X Print Server -Configuration''. -.TP 4. -Depending on #1, start the X Print Server process "Xprt", and -then the toolkit-specific Print Dialog Manager Daemon process -(such as CDEnext's "dtpdmd") at the appropriate times. -Note that libXprintUtils-based applications/toolkits do not need -a Print Dialog Manager Daemon process to use Xprint. -The details are described below. -.PP -Because the X Print Service is based on X, it can be easily distributed. -The most significant factors in which execution model to choose will be -driven by: -.TP 0.2i -\(bu -how many printers will be accessable through the printer -subsystem on any given machine. A system administrator may -choose to cluster printers on a few given machines, or -scatter them across an organization and possibly make -extensive use of remote spoolers to make them globally -available. -.TP 0.2i -\(bu -how many machines will need a copy of the X Print Server -configuration files. The files have been architected so -that one super-set version of them can be maintained and -distributed (e.g. via NFS), and a per-machine or per-user -version of the `Xprinters' is all that is needed to have the -appropriate information in them utilized or ignored. -.TP 0.2i -\(bu -how many users can demand services from a given X Print -Service. -With the above in mind, some obvious execution models include: -.TP 0.2i -\(bu -Global - in this model, the system administrator is choosing -to run the X Print Service on a *few* select machines with -appropriate printers configured, and allow clients access to -the global resource. This can centralize the administration -of printers and configuration files, but may have to be -monitored for performance loading. - -Startup would likely be done by boot-up scripts (such as \fI/etc/init.d/xprint\fR). -.TP 0.2i -\(bu -Per-machine - every machine with potential X Print Service -users would run the service. Printer and configuration file -administration is decentralized, and usage would be limited -to the users on the machine. - -Startup would likely be done by boot-up scripts (such as \fI/etc/init.d/xprint\fR). -.TP 0.2i -\(bu -Per-user session - every user would run an entire X Print -Service for themselves. In the future, the Video X Server -normally started may contain Print X Server capability, so -this model becomes very natural. - -Startup would likely be done at session login or by -launching actions or processes manually once the user -logs in. Note: Deamons like "dtpdmd" must be started after Xprt. -.PP -Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): -.TP 1. - -.nf -[machineA] % Xprt [-XpFile Xprinters file] [:dispNum] -.fi - -Note that Xprt will look for configuration files in either -a default location or where \fBXPCONFIGDIR\fR points. - -\fB-XpFile\fR specifies an alternate `Xprinters' file, rather -than the default one or `\fI${XPCONFIGDIR}/C/print/Xprinters\fR'. -.TP 2. - -.nf -[machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] -.fi - -The dtpdmd will maintain an X-Selection on the X-Server, -and will start dtpdm's as required to service requests. -.PP -In all but the per-user session model, the machine running the dtpdmd -(thus dtpdm's) will need display authorization to the users video -display. -.SH "CLIENT CONFIGURATION" -.PP -Once a X Print Server and dtpdmd have been started -- many of them -in some cases -- clients will need to find and use them. There are -two mechanisms that allow clients to discover X Print Servers and -printers. -.TP 0.2i -\(bu -"X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print -applications, the following notation is understood: - - -.nf -printer_name@machine[:dispNum] -.fi - -For example: - - -.nf -colorlj7@printhub:2 -.fi - -In the above example, the X Print Server running at `printhub:2' -is assumed to support the printer named `colorlj7'. -.TP 0.2i -\(bu -\fB${XPSERVERLIST}\fR - assuming usage of the DtPrint print dialogs, -the environment variable \fB${XPSERVERLIST}\fR can contain a list -of X Print Servers. For example: - - -.nf -XPSERVERLIST="printhub:2 printhub:3 otherdept:0" -.fi - -Then in the dialogs, only a printer name needs to be entered. -The dialog will then search the X Print Servers in \fB${XPSERVERLIST}\fR -for a server than supports the printer, and then establish -contact. -.SH "END-USER SEQUENCE" -.PP -From most CDEnext applications, printing is accomplished by bringing -down the File menu and selecting Print.... This will result in -the DtPrintSetupBox dialog, which will request the name of a printer, -and offer limited capability to configure print options (e.g. number -of copies). If the user wishes, they can select Setup..., which -will start a dtpdm capable of modifying additional print options. -Finally, the user should select Print. -.SH "ENVIRONMENT" -.TP -\fB${XPCONFIGDIR}\fR -This environment variable points to the root -of the Xprint server configuration directory hierarchy. -If the variable is not defined, the default -path is be assumed. The default path may be -\fI/usr/X11R6/lib/X11/xserver/\fR, -\fI/usr/lib/X11/xserver/\fR, -\fI/usr/share/Xprint/xserver/\fR or -\fI/usr/openwin/server/etc/XpConfig\fR, depending on the -system, and may be configured in \fI/etc/init.d/xprint\fR. -.TP -\fB${LANG}\fR -This environment variable selects the locale settings used by the Xprint server. -Xprt allows language-specific settings (stored in \fI${XPCONFIGDIR}/${LANG}/print/\fR) -which will override the default settings (stored in \fI${XPCONFIGDIR}/C/print/\fR). -If \fB${LANG}\fR is not set "C" is assumed. -.TP -\fB${XPSERVERLIST}\fR -The environment variable \fB${XPSERVERLIST}\fR contains a list -of display identifiers (separated by whitespace) which tell an -application where it can find the Xprint servers. Usually -\fB${XPSERVERLIST}\fR is set by the profile startup scripts (e.g. -\fI/etc/profile\fR or \fI/etc/profile.d/xprint.sh\fR) using the output of -\fB/etc/init.d/xprint get_xpserverlist\fR. - -Example: -.PP - -.nf - export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`" -.fi - -Alternatively \fB${XPSERVERLIST}\fR can be set -manually. Example: - - -.nf - export XPSERVERLIST="littlecat:80 bitdog:72" -.fi - -instructs an application to find an Xprint server at display -80 on the machine "littlecat" and at display 72 on the -machine bigdog. -.TP -\fB${XPRINTER} \fR -The environment variable \fB${XPRINTER}\fR -defines the default printer used by print -applications. The syntax is either -\fIprintername\fR or -\fIprintername\fR@\fIdisplay\fR. - -Examples: -.RS -.TP -\fBXPRINTER=ps003\fR -tells an application to look for the -first printer named "ps003" on all Xprint -servers. -.TP -\fBXPRINTER=hplaser19@littlecat:80\fR -tells an application to use the printer "hplaser19" -on the Xprint server at display -"littlecat:80". -.RE - -If \fB${XPRINTER}\fR is not set the applications -will examine the values of the \fB${PDPRINTER}\fR, -\fB${LPDEST}\fR, and -\fB${PRINTER}\fR environment variables (in that order). -.SH "SEE ALSO" -.PP -\fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxprehashprinterlist\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) -.SH "AUTHORS" -.PP -This manual page was written by -Roland Mainz based on the original X11R6.6 -\fIxc/programs/Xserver/XpConfig/README\fR. diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprint.sgml x11r682/xc/programs/Xserver/Xprint/Xprint.sgml --- xc/programs/Xserver/Xprint/Xprint.sgml 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/Xserver/Xprint/Xprint.sgml 1970-01-01 01:00:00.000000000 +0100 @@ -1,627 +0,0 @@ - - - - - - - Xprint - __miscmansuffix__ - - - Xprint - - The "X print service" - a portable, network-transparent printing system based on the X11 protocol - - - Xprint is a very flexible, extensible, scaleable, client/server - print system based on ISO 10175 (and some other specs) and the X11 - rendering protocol. - Using Xprint an application can search, query and use devices like - printers, FAX machines or create documents in formats like PDF. - In particular, an application can seek a printer, query supported - attributes (like paper size, trays, fonts etc.), configure the printer - device to match it’s needs and print on it like on any other X device - reusing parts of the code which is used for the video card Xserver. - - - - - OVERVIEW - - The "X Print Service" technology allows X rendering to devices such as - printers and fax. Most of the service is available in the X11 - technology stack as Xp, with the remainder in single toolkit stacks (e.g. DtPrint for CDE). - Modifications have also been made to the LessTif/Motif/Qt technology - stacks to support Xprint. - - - The Xp portion consists of: - - Xp Extension for the X-Server (included in the X-Server Xprt) - Xp Extension API for the client side (libXp/libXprintUtils) - PCL ddx driver that converts core X to native PCL - PDF ddx driver that converts core X to native PDF - PostScript ddx driver that converts core X to native PostScript - Raster ddx driver that generates xwd rasters which can be converted to PCL, PDF or PostScript rasters - - - - From an X clients perspective, it can attach to one of two nearly - identical X-Servers, a "Video" X-Server, and a "Print" X-Server - which has the additional Xp capability but otherwise looks and - behaves the same. - - - - - HOW THE X PRINT SERVICE WORKS - - The X Print Service expands on the traditional X-Server and Xlib world - in four ways. - - - - - Most obvious is the use of "print ddx drivers" instead of - "video ddx drivers". While a video ddx driver modifies pixels - in a video frame buffer, a print ddx driver generates "page - description language (PDL)" output (such as PCL, PDF or PostScript) - or sends the print rendering instructions to a platform-specific - print API (like Win32/GDI). - - - Once a print ddx driver generates PDL output, it can be sent to - a spooler such as lp1 - or retrieved by the client (to implement functionality like "print-to-file"). - - - Though not currently done, a single X-Server can support both - print and video ddx drivers. - - - - - - Since printers support "paged" output, unlike video, a portion - of the Xp Extension supports APIs to delineate printed output. - For example, XpStartPage and XpEndPage tell the X-Server where - a physical page starts and ends in an otherwise continuous - stream of X rendering primitives. Likewise, XpStartJob and - XpEndJob determine when a collection of pages starts and ends. - XpEndJob typically causes the generated PDL to be submitted to - a spooler, such as lp1. - - - - - Since printers have extensive capabilities, another portion of - the Xp Extension supports APIs to manipulate "print contexts". - - - Once a printer is selected using the Xp Extension API, a print - context to represent it can be created. A print context - embodies the printer selected - it contains the printer's - default capabilities, selectable range of capabilities, - printer state, and generated output. Some "attributes" within - the print context can be modified by the user, and the - X-Server and print ddx driver will react accordingly. For - example, the attribute "content-orientation" can be set to - "landscape" or "portrait" (if the printer supports these - values - which can be queried using the Xprint API as well). - - - - - Since printers can have "built in" fonts, the Xp Extension in - the X-Server works with the print ddx drivers to make - available (for printing only) additional fonts on a per print - context basis. - - - When a print context is created and set for a given printer, - the X font calls may be able to access additional printer - fonts. To do this (typically), the X-Server must have access - to "printer metric files" (.pmf) that describe at minimum the - metrics of the built in fonts. - - - - - - - - USAGE - - There are three tasks to start the X Print Service: - - configuring the X Print Server, - starting the X Print Service - configuring the user session so that clients can find the running X Print Service - - - - The tasks are described in detail below. - - - - - SERVER CONFIGURATION - - The X Print Server (Xprt) can read a number of configuration files which - control its behavior and support for printers. Each vendor platform has - a default location for this information. Xprt can also read the - environment variable XPCONFIGDIR to locate alternate configuration - directories. Common settings include: - - - export XPCONFIGDIR=/X11/lib/X11/XpConfig/ - export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/ - - - - Xprt has many built-in defaults, and lacking any configuration files, - will immediately try to support all printers visible via lpstat1. - - - In order of importance for configuration by a system administrator, the - configuration files for a "C" locale are as follows (see Xprt__mansuffix__ for more - details (including support for non-"C" locales)): - - - ${XPCONFIGDIR}/C/print/Xprinters - - - 'Xprinters' is the top most configuration file. It tells - Xprt which specific printer names (e.g. mylaser) should - be supported, and whether lpstat1 or other commands - should be used to automatically supplement the list of - printers. - - - - - - ${XPCONFIGDIR}/C/print/attributes/printer - - - The 'printer' file maps printer names to model - configurations (see 'model-config' below). For example, - "mylaser" could be mapped to a "HPDJ1600C", and all other - arbitrary printers could be mapped to a default, such as - "HPLJ4SI". When depending on lpstat1 in the Xprinters - file, setting up defaults in 'printer' becomes all the - more important. - - - - - - ${XPCONFIGDIR}/C/print/attributes/document - - - The 'document' file specifies the initial document values - for any print jobs. For example, which paper tray to - use, what default resolution, etc. - - - - - - ${XPCONFIGDIR}/C/print/attributes/job - - - The 'job' file specifies the initial job values for any - print jobs. For example, "notification-profile" can be - set so that when a print job is successfully sent to a - printer, e-mail is sent to the user. - - - - - - ${XPCONFIGDIR}/C/print/models/PSdefault/model-config - ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir - ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf - ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf - - - - The 'model-config' file has attributes that describe the - printer model’s capabilities and default settings. - Printer model fonts may also be present. The model-config - file also identifies the print ddx driver to be used. - - For each printer model supported, a complete hierarchy of - files should exist. In most cases, these files do not - need to be modified. - - - - - - ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl - ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf - ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript - - - - The print ddx drivers can have highly specific - configuration files to control their behavior. In most - cases, these files do not need to be modified. - - - - - - More information in how to configure and customize the X print server can be found in the - Xprt__mansuffix__ - manual page. - - - - - STARTING UP - - The summary checklist for starting the X Print Service is as follows: - - - - - Choose an execution model for the X Print Service. The X - Print Service can be run on a per-user session basis, per - machine basis, or can be run on a few machines globally - available to a number of users. - - - - - If print jobs are to be submitted to a spooler (almost always - the case), make sure all needed printers are available to the - spooler subsystem (most often lp1) - on the same machine running the X Print Service. - - - - - Configure the X Print Server. See ``X Print Server - Configuration''. - - - - - Depending on #1, start the X Print Server process "Xprt", and - then the toolkit-specific Print Dialog Manager Daemon process - (such as CDEnext's "dtpdmd") at the appropriate times. - Note that libXprintUtils-based applications/toolkits do not need - a Print Dialog Manager Daemon process to use Xprint. - - - - The details are described below. - - - Because the X Print Service is based on X, it can be easily distributed. - The most significant factors in which execution model to choose will be - driven by: - - - - how many printers will be accessable through the printer - subsystem on any given machine. A system administrator may - choose to cluster printers on a few given machines, or - scatter them across an organization and possibly make - extensive use of remote spoolers to make them globally - available. - - - - - how many machines will need a copy of the X Print Server - configuration files. The files have been architected so - that one super-set version of them can be maintained and - distributed (e.g. via NFS), and a per-machine or per-user - version of the `Xprinters' is all that is needed to have the - appropriate information in them utilized or ignored. - - - - - how many users can demand services from a given X Print - Service. - - - - - With the above in mind, some obvious execution models include: - - - - Global - in this model, the system administrator is choosing - to run the X Print Service on a *few* select machines with - appropriate printers configured, and allow clients access to - the global resource. This can centralize the administration - of printers and configuration files, but may have to be - monitored for performance loading. - - - Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). - - - - - - Per-machine - every machine with potential X Print Service - users would run the service. Printer and configuration file - administration is decentralized, and usage would be limited - to the users on the machine. - - - Startup would likely be done by boot-up scripts (such as /etc/init.d/xprint). - - - - - - Per-user session - every user would run an entire X Print - Service for themselves. In the future, the Video X Server - normally started may contain Print X Server capability, so - this model becomes very natural. - - - Startup would likely be done at session login or by - launching actions or processes manually once the user - logs in. Note: Deamons like "dtpdmd" must be started after Xprt. - - - - - - Starting of the processes is straight forward. In strict order (example is for manually starting the X print server for CDEnext usage): - - - - [machineA] % Xprt [-XpFile <Xprinters file>] [:dispNum] & - - - Note that Xprt will look for configuration files in either - a default location or where XPCONFIGDIR points. - - - specifies an alternate `Xprinters' file, rather - than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. - - - - - [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] & - - - The dtpdmd will maintain an X-Selection on the X-Server, - and will start dtpdm's as required to service requests. - - - - - - In all but the per-user session model, the machine running the dtpdmd - (thus dtpdm's) will need display authorization to the users video - display. - - - - - CLIENT CONFIGURATION - - Once a X Print Server and dtpdmd have been started -- many of them - in some cases -- clients will need to find and use them. There are - two mechanisms that allow clients to discover X Print Servers and - printers. - - - - - "X Print Specifier" - assuming usage of the DtPrint/XprintUtils-based print - applications, the following notation is understood: - - - printer_name@machine[:dispNum] - - - For example: - - - colorlj7@printhub:2 - - - In the above example, the X Print Server running at `printhub:2' - is assumed to support the printer named `colorlj7'. - - - - - ${XPSERVERLIST} - assuming usage of the DtPrint print dialogs, - the environment variable ${XPSERVERLIST} can contain a list - of X Print Servers. For example: - - - XPSERVERLIST="printhub:2 printhub:3 otherdept:0" - - - Then in the dialogs, only a printer name needs to be entered. - The dialog will then search the X Print Servers in ${XPSERVERLIST} - for a server than supports the printer, and then establish - contact. - - - - - - - - END-USER SEQUENCE - - From most CDEnext applications, printing is accomplished by bringing - down the <File> menu and selecting <Print...>. This will result in - the DtPrintSetupBox dialog, which will request the name of a printer, - and offer limited capability to configure print options (e.g. number - of copies). If the user wishes, they can select <Setup...>, which - will start a dtpdm capable of modifying additional print options. - Finally, the user should select <Print>. - - - - - ENVIRONMENT - - - ${XPCONFIGDIR} - - This environment variable points to the root - of the Xprint server configuration directory hierarchy. - If the variable is not defined, the default - path is be assumed. The default path may be - /usr/X11R6/lib/X11/xserver/, - /usr/lib/X11/xserver/, - /usr/share/Xprint/xserver/ or - /usr/openwin/server/etc/XpConfig, depending on the - system, and may be configured in /etc/init.d/xprint. - - - - - ${LANG} - - - This environment variable selects the locale settings used by the Xprint server. - Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) - which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). - If ${LANG} is not set "C" is assumed. - - - - - - ${XPSERVERLIST} - - The environment variable ${XPSERVERLIST} contains a list - of display identifiers (separated by whitespace) which tell an - application where it can find the Xprint servers. Usually - ${XPSERVERLIST} is set by the profile startup scripts (e.g. - /etc/profile or /etc/profile.d/xprint.sh) using the output of - /etc/init.d/xprint get_xpserverlist. - Example: - - - export XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`" - - - Alternatively ${XPSERVERLIST} can be set - manually. Example: - - - export XPSERVERLIST="littlecat:80 bitdog:72" - - - instructs an application to find an Xprint server at display - 80 on the machine "littlecat" and at display 72 on the - machine bigdog. - - - - - - ${XPRINTER} - - - The environment variable ${XPRINTER} - defines the default printer used by print - applications. The syntax is either - printername or - printername@display. - Examples: - - - XPRINTER=ps003 - - tells an application to look for the - first printer named "ps003" on all Xprint - servers. - - - - - - XPRINTER=hplaser19@littlecat:80 - - tells an application to use the printer "hplaser19" - on the Xprint server at display - "littlecat:80". - - - - - - If ${XPRINTER} is not set the applications - will examine the values of the ${PDPRINTER}, - ${LPDEST}, and - ${PRINTER} environment variables (in that order). - - - - - - - - SEE ALSO - - - - - - - - X11__miscmansuffix__ - xplsprinters__mansuffix__ - xprehashprinterlist__mansuffix__ - xphelloworld__mansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ - - libXp__libmansuffix__ - libXprintUtils__libmansuffix__ - libXprintAppUtils__libmansuffix__ - XmPrintShell__libmansuffix__ - XawPrintShell__libmansuffix__ - Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html) - Xprint main site (http://xprint.mozdev.org/) - - - - - - AUTHORS - - This manual page was written by - Roland Mainz roland.mainz@nrubsig.org based on the original X11R6.6 - xc/programs/Xserver/XpConfig/README. - - - - diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprt.html x11r682/xc/programs/Xserver/Xprint/Xprt.html --- xc/programs/Xserver/Xprint/Xprt.html 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/Xprint/Xprt.html 2004-12-15 08:38:29.000000000 +0100 @@ -0,0 +1,115 @@ +Xprt

      Name

      Xprt — Print server for X Version 11

      Synopsis

      Xprt [-ac] [-audit level] [-pn] [-fp fontpath] [-XpFile file] [-XpSpoolerType spoolername] [:display]

      DESCRIPTION

      Xprt is the Xprint print server + for version 11 of the X Window system for non display devices + such as printers and fax machines.

      Xprint is an advanced printing system which enables X11 + applications to use devices like printers, FAX or create + documents in formats like PostScript, PCL or PDF. It may be used by + clients such as mozilla. +

      Xprint is a very flexible, extensible, scaleable, client/server + print system based on ISO 10175 (and some other specs) and the X11 + rendering protocol. + Using Xprint an application can search, query and use devices like + printers, FAX machines or create documents in formats like PDF. + In particular, an application can seek a printer, query supported + attributes (like paper size, trays, fonts etc.), configure the printer + device to match it's needs and print on it like on any other X device + reusing parts of the code which is used for the video card Xserver. +

      USAGE

      + Although Xprt may be invoked from the command line, it is + preferable to run it as a daemon via the init script + /etc/init.d/xprint (where this script exists). +

      Client programs such as mozilla will require environment + variable ${XPSERVERLIST} to be set, identifying the + "display" on which Xprt is running. This variable may be set + for all users via /etc/profile (or similar), using + /etc/init.d/xprint get_xpserverlist: +

      export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist`

      OPTIONS

      Many of Xprt's command line options are shared in common + with the usual X servers (see Xserver(1x)). + Commonly used options include:

      :display

      The X server runs on the given display. If multiple X + servers are to run simultaneously on a host, each must + have a unique display number. Note that the standard X + server (for video displays) typically runs on display + :0. If /etc/init.d/xprint is used + to invoke Xprt, it may be configured to automatically assign an available + display number.

      -ac

      disables host-based access control mechanisms. Enables access + by any host, and permits any host to modify the access control + list. Use with extreme caution. This option exists primarily + for running test suites remotely.

      -audit level

      sets the audit trail level. The default level is 1, meaning + only connection rejections are reported. Level 2 additionally + reports all successful connections and disconnects. Level 4 + enables messages from the SECURITY extension, if present, + including generation and revocation of authorizations and + violations of the security policy. Level 0 turns off the audit + trail. Audit lines are sent as standard error output.

      -fp fontpath

      sets the search path for fonts. This path is a comma + separated list of directories which Xprt searches for + font databases.

      -pn

      permits the server to continue running if it fails to + establish all of its well-known sockets (connection + points for clients), but establishes at least + one.

      -XpFile file

      Sets an altername Xprinters file (see section FILES).

      -XpSpoolerType spoolername

      + Defines the spooler system to be used for print job spooling. + Supported values in xprint.mozdev.org release 009 are: +

      aix
      aix4
      bsd
      osf
      solaris
      sysv
      uxp
      cups
      lprng
      other
      none

      + (multiple values can be specified, seperated by ':', the first active spooler will be chosen). + The default value is platform-specific and can be obtained via +

      Xprt -h

      . +

      ENVIRONMENT

      + The following environment variables are recognized by the X print server + (environment variables recognized by Xprint clients are described in + Xprint(7)): + +

      ${XPCONFIGDIR}

      This environment variable points to the root + of the Xprint server configuration directory hierarchy. + If the variable is not defined, the default + path is be assumed. The default path may be + /usr/X11R6/lib/X11/xserver/, + /usr/lib/X11/xserver/, + /usr/share/Xprint/xserver/ or + /usr/openwin/server/etc/XpConfig, depending on the + system, and may be configured in /etc/init.d/xprint.

      ${LANG}

      + This environment variable selects the locale settings used by the Xprint server. + Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) + which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). + If ${LANG} is not set "C" is assumed. +

      FILES

      ${XPCONFIGDIR}/${LANG}/print/Xprinters, ${XPCONFIGDIR}/C/print/Xprinters

      + `Xprinters' is the top most configuration file. It tells + Xprt which specific printer names (e.g. mylaser) should + be supported, and whether lpstat(1) or other commands + should be used to automatically supplement the list of + printers. +

      ${XPCONFIGDIR}/${LANG}/print/attributes/printer, ${XPCONFIGDIR}/C/print/attributes/printer

      + The `printer' file maps printer names to model + configurations (see `model-config' below). For example, + "mylaser" could be mapped to a "HPDJ1600C", and all other + arbitrary printers could be mapped to a default, such as + "HPLJ4SI". When depending on lpstat(1) in the Xprinters + file, setting up defaults in `printer' becomes all the + more important. +

      ${XPCONFIGDIR}/${LANG}/print/attributes/document, ${XPCONFIGDIR}/C/print/attributes/document

      + The `document' file specifies the initial document values + for any print jobs. For example, which paper tray to + use, what default resolution, etc. +

      ${XPCONFIGDIR}/${LANG}/print/attributes/job, ${XPCONFIGDIR}/C/print/attributes/job

      + The `job' file specifies the initial job values for any + print jobs. For example, "notification-profile" can be + set so that when a print job is successfully sent to a + printer, e-mail is sent to the user. +

      ${XPCONFIGDIR}/C/print/models/PSdefault/model-config, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf, ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf

      + The `model-config' file has attributes that describe the + printer model's capabilities and default settings. + Printer model fonts may also be present. The model-config + file also identifies the print ddx driver to be used. + + For each printer model supported, a complete hierarchy of + files should exist. In most cases, these files do not + need to be modified. +

      ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf, ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl, ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript

      + The print ddx drivers can have highly specific + configuration files to control their behavior. In most + cases, these files do not need to be modified. +

      SEE ALSO

      Xprint(7), X11(7), xplsprinters(1x), xprehashprinterlist(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      AUTHORS

      + This manual page was written by + Drew Parsons and + Roland Mainz , + with some help from the man page at + http://www.sins.com.au/unix/manpages/Xprt.html and the XFree86 + man page for Xserver(1). +

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprt.man x11r682/xc/programs/Xserver/Xprint/Xprt.man --- xc/programs/Xserver/Xprint/Xprt.man 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/Xprint/Xprt.man 2004-12-15 08:38:29.000000000 +0100 @@ -0,0 +1,196 @@ +.\" -*- coding: us-ascii -*- +.TH Xprt __appmansuffix__ "25 November 2004" +.SH NAME +Xprt \- Print server for X Version 11 +.SH SYNOPSIS +.ad l +\fBXprt\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-ac\fR] [\fB\-audit \fBlevel\fR\fR] [\fB\-pn\fR] [\fB\-fp \fBfontpath\fR\fR] [\fB\-XpFile \fBfile\fR\fR] [\fB\-XpSpoolerType \fBspoolername\fR\fR] [\fB:\fBdisplay\fR\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +Xprt is the Xprint print server +for version 11 of the X Window system for non display devices +such as printers and fax machines. +.PP +Xprint is an advanced printing system which enables X11 +applications to use devices like printers, FAX or create +documents in formats like PostScript, PCL or PDF. It may be used by +clients such as mozilla. +.PP +Xprint is a very flexible, extensible, scaleable, client/server +print system based on ISO 10175 (and some other specs) and the X11 +rendering protocol. +Using Xprint an application can search, query and use devices like +printers, FAX machines or create documents in formats like PDF. +In particular, an application can seek a printer, query supported +attributes (like paper size, trays, fonts etc.), configure the printer +device to match it's needs and print on it like on any other X device +reusing parts of the code which is used for the video card Xserver. +.SH USAGE +Although Xprt may be invoked from the command line, it is +preferable to run it as a daemon via the init script +\fB/etc/init.d/xprint\fR (where this script exists). +.PP +Client programs such as mozilla will require environment +variable \fB${XPSERVERLIST}\fR to be set, identifying the +"display" on which Xprt is running. This variable may be set +for all users via \fB/etc/profile\fR (or similar), using +\fB/etc/init.d/xprint get_xpserverlist\fR: + +.nf +export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist` +.fi + +.SH OPTIONS +Many of Xprt's command line options are shared in common +with the usual X servers (see \fBXserver\fR(__appmansuffix__)). +Commonly used options include: +.TP +\fB:\fIdisplay\fB\fR +The X server runs on the given display. If multiple X +servers are to run simultaneously on a host, each must +have a unique display number. Note that the standard X +server (for video displays) typically runs on display +:0. If \fB/etc/init.d/xprint\fR is used +to invoke Xprt, it may be configured to automatically assign an available +display number. +.TP +\fB\-ac\fR +disables host-based access control mechanisms. Enables access +by any host, and permits any host to modify the access control +list. Use with extreme caution. This option exists primarily +for running test suites remotely. +.TP +\fB\-audit \fIlevel\fB\fR +sets the audit trail level. The default level is 1, meaning +only connection rejections are reported. Level 2 additionally +reports all successful connections and disconnects. Level 4 +enables messages from the SECURITY extension, if present, +including generation and revocation of authorizations and +violations of the security policy. Level 0 turns off the audit +trail. Audit lines are sent as standard error output. +.TP +\fB\-fp \fIfontpath\fB\fR +sets the search path for fonts. This path is a comma +separated list of directories which Xprt searches for +font databases. +.TP +\fB\-pn\fR +permits the server to continue running if it fails to +establish all of its well-known sockets (connection +points for clients), but establishes at least +one. +.TP +\fB\-XpFile \fIfile\fB\fR +Sets an altername Xprinters file (see section FILES). +.TP +\fB\-XpSpoolerType \fIspoolername\fB\fR +Defines the spooler system to be used for print job spooling. +Supported values in xprint.mozdev.org release 009 are: + +aix + +aix4 + +bsd + +osf + +solaris + +sysv + +uxp + +cups + +lprng + +other + +none + +(multiple values can be specified, seperated by ':', the first active spooler will be chosen). +The default value is platform-specific and can be obtained via + +.nf +Xprt \-h +.fi + +\&. +.SH ENVIRONMENT +The following environment variables are recognized by the X print server +(environment variables recognized by Xprint clients are described in +\fBXprint\fR(__miscmansuffix__)): +.TP +\fB${XPCONFIGDIR}\fR +This environment variable points to the root +of the Xprint server configuration directory hierarchy. +If the variable is not defined, the default +path is be assumed. The default path may be +\fB/usr/X11R6/lib/X11/xserver/\fR, +\fB/usr/lib/X11/xserver/\fR, +\fB/usr/share/Xprint/xserver/\fR or +\fB/usr/openwin/server/etc/XpConfig\fR, depending on the +system, and may be configured in \fB/etc/init.d/xprint\fR. +.TP +\fB${LANG}\fR +This environment variable selects the locale settings used by the Xprint server. +Xprt allows language-specific settings (stored in \fB${XPCONFIGDIR}/${LANG}/print/\fR) +which will override the default settings (stored in \fB${XPCONFIGDIR}/C/print/\fR). +If \fB${LANG}\fR is not set "C" is assumed. +.PP +.SH FILES +.TP +\fB${XPCONFIGDIR}/${LANG}/print/Xprinters\fR, \fB${XPCONFIGDIR}/C/print/Xprinters\fR +`Xprinters' is the top most configuration file. It tells +Xprt which specific printer names (e.g. mylaser) should +be supported, and whether \fBlpstat\fR(1) or other commands +should be used to automatically supplement the list of +printers. +.TP +\fB${XPCONFIGDIR}/${LANG}/print/attributes/printer\fR, \fB${XPCONFIGDIR}/C/print/attributes/printer\fR +The `printer' file maps printer names to model +configurations (see `model-config' below). For example, +"mylaser" could be mapped to a "HPDJ1600C", and all other +arbitrary printers could be mapped to a default, such as +"HPLJ4SI". When depending on \fBlpstat\fR(1) in the Xprinters +file, setting up defaults in `printer' becomes all the +more important. +.TP +\fB${XPCONFIGDIR}/${LANG}/print/attributes/document\fR, \fB${XPCONFIGDIR}/C/print/attributes/document\fR +The `document' file specifies the initial document values +for any print jobs. For example, which paper tray to +use, what default resolution, etc. +.TP +\fB${XPCONFIGDIR}/${LANG}/print/attributes/job\fR, \fB${XPCONFIGDIR}/C/print/attributes/job\fR +The `job' file specifies the initial job values for any +print jobs. For example, "notification-profile" can be +set so that when a print job is successfully sent to a +printer, e-mail is sent to the user. +.TP +\fB${XPCONFIGDIR}/C/print/models/PSdefault/model\-config\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf\fR, \fB${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf\fR +The `model-config' file has attributes that describe the +printer model's capabilities and default settings. +Printer model fonts may also be present. The model-config +file also identifies the print ddx driver to be used. +For each printer model supported, a complete hierarchy of +files should exist. In most cases, these files do not +need to be modified. +.TP +\fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pdf\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/pcl\fR, \fB${XPCONFIGDIR}/C/print/ddx\-config/raster/postscript\fR +The print ddx drivers can have highly specific +configuration files to control their behavior. In most +cases, these files do not need to be modified. +.SH "SEE ALSO" +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxprehashprinterlist\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) +.SH AUTHORS +This manual page was written by +Drew Parsons and +Roland Mainz , +with some help from the man page at +http://www.sins.com.au/unix/manpages/Xprt.html and the XFree86 +man page for \fBXserver\fR(1). diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/Xprt.sgml x11r682/xc/programs/Xserver/Xprint/Xprt.sgml --- xc/programs/Xserver/Xprint/Xprt.sgml 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/Xprint/Xprt.sgml 2004-12-15 08:38:29.000000000 +0100 @@ -0,0 +1,371 @@ + + + + + + + Xprt + __appmansuffix__ + + + Xprt + + Print server for X Version 11 + + + + Xprt + + + + + + + + + + + + + + + + + + + DESCRIPTION + + Xprt is the Xprint print server + for version 11 of the X Window system for non display devices + such as printers and fax machines. + + Xprint is an advanced printing system which enables X11 + applications to use devices like printers, FAX or create + documents in formats like PostScript, PCL or PDF. It may be used by + clients such as mozilla. + + + Xprint is a very flexible, extensible, scaleable, client/server + print system based on ISO 10175 (and some other specs) and the X11 + rendering protocol. + Using Xprint an application can search, query and use devices like + printers, FAX machines or create documents in formats like PDF. + In particular, an application can seek a printer, query supported + attributes (like paper size, trays, fonts etc.), configure the printer + device to match it's needs and print on it like on any other X device + reusing parts of the code which is used for the video card Xserver. + + + + + USAGE + + + Although Xprt may be invoked from the command line, it is + preferable to run it as a daemon via the init script + /etc/init.d/xprint (where this script exists). + + + Client programs such as mozilla will require environment + variable ${XPSERVERLIST} to be set, identifying the + "display" on which Xprt is running. This variable may be set + for all users via /etc/profile (or similar), using + /etc/init.d/xprint get_xpserverlist: + + export XPSERVERLIST=`/etc/init.d/xprint get_xpserverlist` + + + + + + OPTIONS + + Many of Xprt's command line options are shared in common + with the usual X servers (see Xserver__appmansuffix__). + Commonly used options include: + + + + + + + The X server runs on the given display. If multiple X + servers are to run simultaneously on a host, each must + have a unique display number. Note that the standard X + server (for video displays) typically runs on display + :0. If /etc/init.d/xprint is used + to invoke Xprt, it may be configured to automatically assign an available + display number. + + + + + + + disables host-based access control mechanisms. Enables access + by any host, and permits any host to modify the access control + list. Use with extreme caution. This option exists primarily + for running test suites remotely. + + + + + + + sets the audit trail level. The default level is 1, meaning + only connection rejections are reported. Level 2 additionally + reports all successful connections and disconnects. Level 4 + enables messages from the SECURITY extension, if present, + including generation and revocation of authorizations and + violations of the security policy. Level 0 turns off the audit + trail. Audit lines are sent as standard error output. + + + + + + + sets the search path for fonts. This path is a comma + separated list of directories which Xprt searches for + font databases. + + + + + + + permits the server to continue running if it fails to + establish all of its well-known sockets (connection + points for clients), but establishes at least + one. + + + + + + + + Sets an altername Xprinters file (see section FILES). + + + + + + + + Defines the spooler system to be used for print job spooling. + Supported values in xprint.mozdev.org release 009 are: + + aix + aix4 + bsd + osf + solaris + sysv + uxp + cups + lprng + other + none + + (multiple values can be specified, seperated by ':', the first active spooler will be chosen). + The default value is platform-specific and can be obtained via + Xprt -h. + + + + + + + + ENVIRONMENT + + The following environment variables are recognized by the X print server + (environment variables recognized by Xprint clients are described in + Xprint__miscmansuffix__): + + + + ${XPCONFIGDIR} + + This environment variable points to the root + of the Xprint server configuration directory hierarchy. + If the variable is not defined, the default + path is be assumed. The default path may be + /usr/X11R6/lib/X11/xserver/, + /usr/lib/X11/xserver/, + /usr/share/Xprint/xserver/ or + /usr/openwin/server/etc/XpConfig, depending on the + system, and may be configured in /etc/init.d/xprint. + + + + + ${LANG} + + + This environment variable selects the locale settings used by the Xprint server. + Xprt allows language-specific settings (stored in ${XPCONFIGDIR}/${LANG}/print/) + which will override the default settings (stored in ${XPCONFIGDIR}/C/print/). + If ${LANG} is not set "C" is assumed. + + + + + + + + + FILES + + + + ${XPCONFIGDIR}/${LANG}/print/Xprinters + ${XPCONFIGDIR}/C/print/Xprinters + + + `Xprinters' is the top most configuration file. It tells + Xprt which specific printer names (e.g. mylaser) should + be supported, and whether lpstat1 or other commands + should be used to automatically supplement the list of + printers. + + + + + + ${XPCONFIGDIR}/${LANG}/print/attributes/printer + ${XPCONFIGDIR}/C/print/attributes/printer + + + The `printer' file maps printer names to model + configurations (see `model-config' below). For example, + "mylaser" could be mapped to a "HPDJ1600C", and all other + arbitrary printers could be mapped to a default, such as + "HPLJ4SI". When depending on lpstat1 in the Xprinters + file, setting up defaults in `printer' becomes all the + more important. + + + + + + ${XPCONFIGDIR}/${LANG}/print/attributes/document + ${XPCONFIGDIR}/C/print/attributes/document + + + The `document' file specifies the initial document values + for any print jobs. For example, which paper tray to + use, what default resolution, etc. + + + + + + ${XPCONFIGDIR}/${LANG}/print/attributes/job + ${XPCONFIGDIR}/C/print/attributes/job + + + The `job' file specifies the initial job values for any + print jobs. For example, "notification-profile" can be + set so that when a print job is successfully sent to a + printer, e-mail is sent to the user. + + + + + + ${XPCONFIGDIR}/C/print/models/PSdefault/model-config + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/fonts.dir + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00051.pmf + ${XPCONFIGDIR}/C/print/models/PSdefault/fonts/9nb00093.pmf + + + + The `model-config' file has attributes that describe the + printer model's capabilities and default settings. + Printer model fonts may also be present. The model-config + file also identifies the print ddx driver to be used. + + For each printer model supported, a complete hierarchy of + files should exist. In most cases, these files do not + need to be modified. + + + + + + ${XPCONFIGDIR}/C/print/ddx-config/raster/pdf + ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl + ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript + + + + The print ddx drivers can have highly specific + configuration files to control their behavior. In most + cases, these files do not need to be modified. + + + + + + + + + SEE ALSO + + + + + + + Xprint__miscmansuffix__ + X11__miscmansuffix__ + xplsprinters__appmansuffix__ + xprehashprinterlist__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + + + libXp__libmansuffix__ + libXprintUtils__libmansuffix__ + libXprintAppUtils__libmansuffix__ + XmPrintShell__libmansuffix__ + XawPrintShell__libmansuffix__ + Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html) + Xprint main site (http://xprint.mozdev.org/) + + + + + + AUTHORS + + This manual page was written by + Drew Parsons dparsons@debian.org and + Roland Mainz roland.mainz@nrubsig.org, + with some help from the man page at + http://www.sins.com.au/unix/manpages/Xprt.html and the XFree86 + man page for Xserver1. + + + + + + diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/attributes.c x11r682/xc/programs/Xserver/Xprint/attributes.c --- xc/programs/Xserver/Xprint/attributes.c 2004-07-20 00:01:52.000000000 +0200 +++ xc/programs/Xserver/Xprint/attributes.c 2005-01-24 04:39:28.000000000 +0100 @@ -816,7 +816,7 @@ char *s, c; if (*type != XrmQString) - return; + return False; for (firstNameSeen = False; *quarks; bindings++, quarks++) { if (*bindings == XrmBindLoosely) { @@ -1084,34 +1084,6 @@ } /* - * ExecuteCommand takes two pointers - the command to execute, - * and the "argv" style NULL-terminated vector of arguments for the command. - * We wait for the command to terminate before continuing to ensure that - * we don't delete the job file before the spooler has made a copy. - */ -static void -ExecCommand(pCommand, argVector) - char *pCommand; - char **argVector; -{ - pid_t childPid; - int status; - - if((childPid = fork()) == 0) - { - /* return BadAlloc? */ - if (execv(pCommand, argVector) == -1) { - FatalError("unable to exec '%s'", pCommand); - } - } - else - { - (void) waitpid(childPid, &status, 0); - } - return; -} - -/* * SendFileToCommand takes three character pointers - the file name, * the command to execute, * and the "argv" style NULL-terminated vector of arguments for the command. @@ -1515,6 +1487,8 @@ FreeVector(vector); xfree(cmdNam); + + return Success; } /* diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/attributes.h x11r682/xc/programs/Xserver/Xprint/attributes.h --- xc/programs/Xserver/Xprint/attributes.h 2004-04-23 20:57:32.000000000 +0200 +++ xc/programs/Xserver/Xprint/attributes.h 2005-01-24 04:39:28.000000000 +0100 @@ -109,8 +109,6 @@ char *ReplaceFileString(char *string, char *inFileName, char *outFileName); -void ExecCommand(char *pCommand, - char **argVector); int TransferBytes(FILE *pSrcFile, FILE *pDstFile, int numBytes); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/etc/init.d/xprint.cpp x11r682/xc/programs/Xserver/Xprint/etc/init.d/xprint.cpp --- xc/programs/Xserver/Xprint/etc/init.d/xprint.cpp 2004-08-11 15:55:03.000000000 +0200 +++ xc/programs/Xserver/Xprint/etc/init.d/xprint.cpp 2005-01-24 04:29:12.000000000 +0100 @@ -248,7 +248,7 @@ tok="${val#*=}" done done - ) | tr "," "[\n]" | fontpath2fontlist + ) | tr "," "\n" | fontpath2fontlist } get_fontlist_from_all_xfs_configs() @@ -832,7 +832,7 @@ echo ${display} fi ) - done | tr "[\n]" " " + done | tr "\n" " " ) # Only produce output if we have some entries... [ "${xpserverlist}" != "" ] && echo "${xpserverlist}" diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/pcl/PclInit.c x11r682/xc/programs/Xserver/Xprint/pcl/PclInit.c --- xc/programs/Xserver/Xprint/pcl/PclInit.c 2004-04-23 20:57:50.000000000 +0200 +++ xc/programs/Xserver/Xprint/pcl/PclInit.c 2004-12-13 06:16:11.000000000 +0100 @@ -329,12 +329,12 @@ */ static char DOC_ATT_SUPP[]="document-attributes-supported"; -static char DOC_ATT_VAL[]="document-format"; +static char DOC_ATT_VAL[]="document-format xp-listfonts-modes"; static char JOB_ATT_SUPP[]="job-attributes-supported"; static char JOB_ATT_VAL[]=""; static char PAGE_ATT_SUPP[]="xp-page-attributes-supported"; static char PAGE_ATT_VAL[]="content-orientation default-printer-resolution \ -default-input-tray default-medium plex"; +default-input-tray default-medium plex xp-listfonts-modes"; static int PclInitContext(XpContextPtr pCon) @@ -427,7 +427,7 @@ server = XpGetOneAttribute( pCon, XPServerAttr, DOC_ATT_SUPP ); if( ( attrStr = (char *)xalloc(strlen(server) + strlen(DOC_ATT_SUPP) + strlen(DOC_ATT_VAL) + - strlen(PAGE_ATT_VAL) + 6 ) ) + strlen(PAGE_ATT_VAL) + 8 ) ) == (char *)NULL ) return BadAlloc; sprintf( attrStr, "*%s:\t%s %s %s", DOC_ATT_SUPP, server, @@ -440,7 +440,7 @@ */ server = XpGetOneAttribute( pCon, XPServerAttr, JOB_ATT_SUPP ); if( ( attrStr = (char *)xalloc(strlen(server) + strlen(JOB_ATT_SUPP) - + strlen(JOB_ATT_VAL) + 4 ) ) + + strlen(JOB_ATT_VAL) + 8 ) ) == (char *)NULL ) return BadAlloc; sprintf( attrStr, "*%s:\t%s %s", JOB_ATT_SUPP, server, JOB_ATT_VAL ); @@ -452,7 +452,7 @@ */ server = XpGetOneAttribute( pCon, XPServerAttr, PAGE_ATT_SUPP ); if( ( attrStr = (char *)xalloc(strlen(server) + strlen(PAGE_ATT_SUPP) - + strlen(PAGE_ATT_VAL) + 4 ) ) + + strlen(PAGE_ATT_VAL) + 8 ) ) == (char *)NULL ) return BadAlloc; sprintf( attrStr, "*%s:\t%s %s", PAGE_ATT_SUPP, server, PAGE_ATT_VAL ); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/Ps.h x11r682/xc/programs/Xserver/Xprint/ps/Ps.h --- xc/programs/Xserver/Xprint/ps/Ps.h 2004-07-18 07:21:20.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/Ps.h 2005-01-24 04:39:28.000000000 +0100 @@ -350,7 +350,6 @@ extern Bool InitializePsDriver(int ndx, ScreenPtr pScreen, int argc, char **argv); -static Bool PsDestroyContext(XpContextPtr pCon); extern XpContextPtr PsGetContextFromWindow(WindowPtr win); /* @@ -374,9 +373,6 @@ */ extern Bool PsCreateGC(GCPtr pGC); -static int PsGetDrawablePrivateStuff(DrawablePtr pDrawable, GC *gc, - unsigned long *valid, PsOutPtr *psOut, - ColormapPtr *cMap); extern PsContextPrivPtr PsGetPsContextPriv( DrawablePtr pDrawable ); extern int PsUpdateDrawableGC(GCPtr pGC, DrawablePtr pDrawable, PsOutPtr *psOut, ColormapPtr *cMap); @@ -556,7 +552,7 @@ extern void PsStoreColors(ColormapPtr pColor, int ndef, xColorItem *pdefs); extern void PsResolveColor(unsigned short *pRed, unsigned short *pGreen, unsigned short *pBlue, VisualPtr pVisual); -extern int PsGetPixelColor(ColormapPtr cMap, int pixval); +extern PsOutColor PsGetPixelColor(ColormapPtr cMap, int pixval); extern void PsSetFillColor(DrawablePtr pDrawable, GCPtr pGC, PsOutPtr psOut, ColormapPtr cMap); @@ -566,6 +562,7 @@ extern PixmapPtr PsCreatePixmap(ScreenPtr pScreen, int width, int height, int depth); +extern void PsScrubPixmap(PixmapPtr pPixmap); extern Bool PsDestroyPixmap(PixmapPtr pPixmap); extern DisplayListPtr PsGetFreeDisplayBlock(PsPixmapPrivPtr priv); extern void PsReplayPixmap(PixmapPtr pix, DrawablePtr pDrawable); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/PsArea.c x11r682/xc/programs/Xserver/Xprint/ps/PsArea.c --- xc/programs/Xserver/Xprint/ps/PsArea.c 2004-04-23 20:57:56.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/PsArea.c 2004-12-13 06:01:14.000000000 +0100 @@ -131,6 +131,13 @@ PsOut_Offset(psOut, pDrawable->x, pDrawable->y); pt = (char *)(&i); i = 1; if( pt[0]=='\001' ) swap = 1; else swap = 0; +#ifdef PSOUT_USE_DEEPCOLOR + if( depth==30 ) + { + ErrorF("PsPutScaledImage: Not implemented yet for 30bit\m"); + } + else +#endif /* PSOUT_USE_DEEPCOLOR */ if( depth==24 ) { PsOut_BeginImage(psOut, 0, 0, x, y, w, h, sw, sh, 3); @@ -174,6 +181,34 @@ else goto error; PsOut_EndImage(psOut); } +#ifdef PSOUT_USE_DEEPCOLOR + else if( (depth > 8) && (depth < 16) ) + { + int rowsiz = PixmapBytePad(w, depth); + PsOut_BeginImage(psOut, 0, 0, x, y, w, h, sw, sh, 3); + for( r=0 ; r 8) && (depth < 16) ) + { + int rowsiz = PixmapBytePad(w, depth); + PsOut_BeginImageIM(psOut, 0, 0, x, y, w, h, sw, sh, 3); + for( r=0 ; rpVisual; - Pixel pix; - - if( pVisual->class==TrueColor ) - { - for( i=0 ; iColormapEntries ; i++ ) - { - rgb = (i<<8)|i; - - pColor->red[i].fShared = FALSE; - pColor->red[i].co.local.red = rgb; - pColor->red[i].co.local.green = 0; - pColor->red[i].co.local.blue = 0; - - pColor->green[i].fShared = FALSE; - pColor->green[i].co.local.red = 0; - pColor->green[i].co.local.green = rgb; - pColor->green[i].co.local.blue = 0; - - pColor->blue[i].fShared = FALSE; - pColor->blue[i].co.local.red = 0; - pColor->blue[i].co.local.green = 0; - pColor->blue[i].co.local.blue = rgb; - } - } - return TRUE; + return miInitializeColormap(pColor); } void PsDestroyColormap(ColormapPtr pColor) { + /* NO-OP */ } void PsInstallColormap(ColormapPtr pColor) { + miInstallColormap(pColor); } void PsUninstallColormap(ColormapPtr pColor) { + miUninstallColormap(pColor); } int @@ -132,7 +110,7 @@ ScreenPtr pScreen, XID *pCmapList) { - return 0; + return miListInstalledColormaps(pScreen, pCmapList); } void @@ -160,18 +138,71 @@ unsigned short *pBlue, VisualPtr pVisual) { + miResolveColor(pRed, pGreen, pBlue, pVisual); } -int +PsOutColor PsGetPixelColor(ColormapPtr cMap, int pixval) { - int r, g, b; - if( cMap->pVisual->class==TrueColor ) return(pixval); - if( pixval<0 || pixval>255 ) return(0); - r = cMap->red[pixval].co.local.red>>8; - g = cMap->red[pixval].co.local.green>>8; - b = cMap->red[pixval].co.local.blue>>8; - return((r<<16)|(g<<8)|b); + VisualPtr v = cMap->pVisual; + switch( v->class ) + { + case TrueColor: + { + PsOutColor p = pixval; + PsOutColor r, g, b; +#ifdef PSOUT_USE_DEEPCOLOR + int shift = 16 - v->bitsPerRGBValue; +#else + int shift = 8 - v->bitsPerRGBValue; +#endif /* PSOUT_USE_DEEPCOLOR */ + + r = ((p & v->redMask) >> v->offsetRed) << shift; + g = ((p & v->greenMask) >> v->offsetGreen) << shift; + b = ((p & v->blueMask) >> v->offsetBlue) << shift; + +#ifdef PSOUT_USE_DEEPCOLOR + return((r<<32)|(g<<16)|b); +#else + return((r<<16)|(g<<8)|b); +#endif /* PSOUT_USE_DEEPCOLOR */ + } + case PseudoColor: + case GrayScale: + case StaticGray: + { + PsOutColor r, g, b; + + if( pixval < 0 || pixval > v->ColormapEntries) + return(0); + + r = cMap->red[pixval].co.local.red; + g = cMap->red[pixval].co.local.green; + b = cMap->red[pixval].co.local.blue; + + if ((v->class | DynamicClass) == GrayScale) + { + /* rescale to gray (see |miResolveColor()|) */ + r = g = b = (30L*r + 59L*g + 11L*b) / 100L; + } + +#ifdef PSOUT_USE_DEEPCOLOR + return((r<<32)|(g<<16)|b); +#else + r >>= 8; + g >>= 8; + b >>= 8; + + return((r<<16)|(g<<8)|b); +#endif /* PSOUT_USE_DEEPCOLOR */ + } + default: + FatalError("PsGetPixelColor: Unsupported visual %x\n", + (int)cMap->pVisual->class); + break; + } + + return 0; /* NO-OP*/ } void diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/PsGC.c x11r682/xc/programs/Xserver/Xprint/ps/PsGC.c --- xc/programs/Xserver/Xprint/ps/PsGC.c 2004-07-18 07:21:20.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/PsGC.c 2004-12-13 06:06:13.000000000 +0100 @@ -380,6 +380,16 @@ { GCPtr pDst; + if (pSrc == NULL) { + /* https://freedesktop.org/bugzilla/show_bug.cgi?id=1416 ("'x11perf + * -copypixpix500' crashes Xprt's PostScript DDX [PsCreateAndCopyGC"): + * I have no clue whether this is the real fix or just wallpapering + * over the crash (that's why we warn here loudly when this + * happens) ... */ + fprintf(stderr, "PsCreateAndCopyGC: pSrc == NULL\n"); + return NULL; + } + if ((pDst = CreateScratchGC(pDrawable->pScreen, pDrawable->depth)) == NULL) { diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/PsInit.c x11r682/xc/programs/Xserver/Xprint/ps/PsInit.c --- xc/programs/Xserver/Xprint/ps/PsInit.c 2004-04-26 13:07:03.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/PsInit.c 2004-12-13 07:29:43.000000000 +0100 @@ -119,8 +119,18 @@ #endif char **printerNames; int numPrinters; - int nVisuals; - int nDepths; + int nv, /* total number of visuals */ + nv_1bit, /* number of 8bit visuals */ + nv_8bit, /* number of 8bit visuals */ + nv_12bit, /* number of 12bit visuals */ + nv_24bit, /* number of 24bit visuals*/ + nv_30bit; /* number of 30bit visuals*/ + int nd; /* number of depths */ + VisualID *vids_1bit, + *vids_8bit, + *vids_12bit, + *vids_24bit, + *vids_30bit; VisualPtr visuals; DepthPtr depths; VisualID defaultVisual; @@ -179,44 +189,180 @@ /* Will BitmapToRegion make any difference at all? */ pScreen->BitmapToRegion = mfbPixmapToRegion; - nVisuals = 2; - nDepths = 2; - visuals = (VisualPtr)xalloc(nVisuals*sizeof(VisualRec)); - depths = (DepthPtr) xalloc(nDepths*sizeof(DepthRec)); - - visuals[0].vid = FakeClientID(0); - visuals[0].class = TrueColor; - visuals[0].bitsPerRGBValue = 8; - visuals[0].ColormapEntries = 256; - visuals[0].nplanes = 24; - visuals[0].redMask = 0x00FF0000; - visuals[0].greenMask = 0x0000FF00; - visuals[0].blueMask = 0x000000FF; - visuals[0].offsetRed = 16; - visuals[0].offsetGreen = 8; - visuals[0].offsetBlue = 0; - - visuals[1].vid = FakeClientID(0); - visuals[1].class = PseudoColor; - visuals[1].bitsPerRGBValue = 8; - visuals[1].ColormapEntries = 256; - visuals[1].nplanes = 8; - visuals[1].redMask = 0x0; - visuals[1].greenMask = 0x0; - visuals[1].blueMask = 0x0; - visuals[1].offsetRed = 0x0; - visuals[1].offsetGreen = 0x0; - visuals[1].offsetBlue = 0x0; - - depths[0].depth = 24; - depths[0].numVids = 1; - depths[0].vids = (VisualID *)xalloc(sizeof(VisualID)); - depths[0].vids[0] = visuals[0].vid; - - depths[1].depth = 8; - depths[1].numVids = 1; - depths[1].vids = (VisualID *)xalloc(sizeof(VisualID)); - depths[1].vids[0] = visuals[1].vid; + visuals = (VisualPtr) xalloc(8*sizeof(VisualRec)); + depths = (DepthPtr) xalloc(8*sizeof(DepthRec)); + vids_1bit = (VisualID *)xalloc(8*sizeof(VisualID)); + vids_8bit = (VisualID *)xalloc(8*sizeof(VisualID)); + vids_12bit = (VisualID *)xalloc(8*sizeof(VisualID)); + vids_24bit = (VisualID *)xalloc(8*sizeof(VisualID)); + vids_30bit = (VisualID *)xalloc(8*sizeof(VisualID)); + + nv = nv_1bit = nv_8bit = nv_12bit = nv_24bit = nv_30bit = nd = 0; + + /* TrueColor, 24bit */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = TrueColor; + visuals[nv].bitsPerRGBValue = 8; + visuals[nv].ColormapEntries = 256; + visuals[nv].nplanes = 24; + visuals[nv].redMask = 0X00FF0000; + visuals[nv].greenMask = 0X0000FF00; + visuals[nv].blueMask = 0X000000FF; + visuals[nv].offsetRed = 16; + visuals[nv].offsetGreen = 8; + visuals[nv].offsetBlue = 0; + vids_24bit[nv_24bit] = visuals[nv].vid; + nv++; nv_24bit++; + + /* PseudoColor, 8bit */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = PseudoColor; + visuals[nv].bitsPerRGBValue = 8; + visuals[nv].ColormapEntries = 256; + visuals[nv].nplanes = 8; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_8bit[nv_8bit] = visuals[nv].vid; + nv++; nv_8bit++; + + /* GrayScale, 8bit */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = GrayScale; + visuals[nv].bitsPerRGBValue = 8; + visuals[nv].ColormapEntries = 256; + visuals[nv].nplanes = 8; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_8bit[nv_8bit] = visuals[nv].vid; + nv++; nv_8bit++; + + /* StaticGray, 8bit */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = StaticGray; + visuals[nv].bitsPerRGBValue = 8; + visuals[nv].ColormapEntries = 256; + visuals[nv].nplanes = 8; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_8bit[nv_8bit] = visuals[nv].vid; + nv++; nv_8bit++; + + /* StaticGray, 1bit */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = StaticGray; + visuals[nv].bitsPerRGBValue = 1; + visuals[nv].ColormapEntries = 2; + visuals[nv].nplanes = 1; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_1bit[nv_1bit] = visuals[nv].vid; + nv++; nv_1bit++; + +#ifdef PSOUT_USE_DEEPCOLOR + /* TrueColor, 30bit, 10bit per R-,G-,B-gun */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = TrueColor; + visuals[nv].bitsPerRGBValue = 10; + visuals[nv].ColormapEntries = 1024; + visuals[nv].nplanes = 30; + visuals[nv].redMask = 0X3FF00000; + visuals[nv].greenMask = 0X000FFC00; + visuals[nv].blueMask = 0X000003FF; + visuals[nv].offsetRed = 20; + visuals[nv].offsetGreen = 10; + visuals[nv].offsetBlue = 0; + vids_30bit[nv_30bit] = visuals[nv].vid; + nv++; nv_30bit++; + + /* PostScript Level 2 and above, colors can have 12 bits per component + * (36 bit for RGB) */ + + /* GrayScale, 12bit, 12bit per R-,G-,B-gun */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = GrayScale; + visuals[nv].bitsPerRGBValue = 12; + visuals[nv].ColormapEntries = 4096; + visuals[nv].nplanes = 12; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_12bit[nv_12bit] = visuals[nv].vid; + nv++; nv_12bit++; + + /* StaticGray, 12bit, 12bit per R-,G-,B-gun */ + visuals[nv].vid = FakeClientID(0); + visuals[nv].class = StaticGray; + visuals[nv].bitsPerRGBValue = 12; + visuals[nv].ColormapEntries = 4096; + visuals[nv].nplanes = 12; + visuals[nv].redMask = 0x0; + visuals[nv].greenMask = 0x0; + visuals[nv].blueMask = 0x0; + visuals[nv].offsetRed = 0x0; + visuals[nv].offsetGreen = 0x0; + visuals[nv].offsetBlue = 0x0; + vids_12bit[nv_12bit] = visuals[nv].vid; + nv++; nv_12bit++; +#endif /* PSOUT_USE_DEEPCOLOR */ + + if( nv_30bit > 0 ) + { + depths[nd].depth = 30; + depths[nd].numVids = nv_30bit; + depths[nd].vids = vids_30bit; + nd++; + } + + if( nv_24bit > 0 ) + { + depths[nd].depth = 24; + depths[nd].numVids = nv_24bit; + depths[nd].vids = vids_24bit; + nd++; + } + + if( nv_12bit > 0 ) + { + depths[nd].depth = 12; + depths[nd].numVids = nv_12bit; + depths[nd].vids = vids_12bit; + nd++; + } + + if( nv_8bit > 0 ) + { + depths[nd].depth = 8; + depths[nd].numVids = nv_8bit; + depths[nd].vids = vids_8bit; + nd++; + } + + if( nv_1bit > 0 ) + { + depths[nd].depth = 1; + depths[nd].numVids = nv_1bit; + depths[nd].vids = vids_1bit; + nd++; + } /* Defaul visual is 8bit PseudoColor */ defaultVisual = visuals[1].vid; @@ -228,7 +374,7 @@ GlxWrapInitVisuals(&proc); /* GlxInitVisuals ignores the last three arguments. */ - proc(&visuals, &depths, &nVisuals, &nDepths, + proc(&visuals, &depths, &nv, &nd, &rootDepth, &defaultVisual, 0, 0, 0); } #endif /* GLXEXT */ @@ -237,8 +383,8 @@ pScreen->width, pScreen->height, (int) (pScreen->width / (pScreen->mmWidth / 25.40)), (int) (pScreen->height / (pScreen->mmHeight / 25.40)), - 0, rootDepth, nDepths, - depths, defaultVisual, nVisuals, visuals); + 0, rootDepth, nd, + depths, defaultVisual, nv, visuals); if( cfbCreateDefColormap(pScreen)==FALSE ) return FALSE; @@ -282,12 +428,12 @@ */ static char DOC_ATT_SUPP[]="document-attributes-supported"; -static char DOC_ATT_VAL[]="document-format"; +static char DOC_ATT_VAL[]="document-format xp-listfonts-modes"; static char JOB_ATT_SUPP[]="job-attributes-supported"; static char JOB_ATT_VAL[]=""; static char PAGE_ATT_SUPP[]="xp-page-attributes-supported"; static char PAGE_ATT_VAL[]="content-orientation default-printer-resolution \ -default-input-tray default-medium plex"; +default-input-tray default-medium plex xp-listfonts-modes"; static int PsInitContext(pCon) @@ -346,7 +492,7 @@ server = XpGetOneAttribute( pCon, XPServerAttr, DOC_ATT_SUPP ); if ((attrStr = (char *) xalloc(strlen(server) + strlen(DOC_ATT_SUPP) + strlen(DOC_ATT_VAL) - + strlen(PAGE_ATT_VAL) + 6)) == NULL) + + strlen(PAGE_ATT_VAL) + 8)) == NULL) { return BadAlloc; } @@ -360,7 +506,7 @@ */ server = XpGetOneAttribute( pCon, XPServerAttr, JOB_ATT_SUPP ); if ((attrStr = (char *) xalloc(strlen(server) + strlen(JOB_ATT_SUPP) + - strlen(JOB_ATT_VAL) + 4)) == NULL) + strlen(JOB_ATT_VAL) + 8)) == NULL) { return BadAlloc; } @@ -373,7 +519,7 @@ */ server = XpGetOneAttribute( pCon, XPServerAttr, PAGE_ATT_SUPP ); if ((attrStr = (char *) xalloc(strlen(server) + strlen(PAGE_ATT_SUPP) + - strlen(PAGE_ATT_VAL) + 4)) == NULL) + strlen(PAGE_ATT_VAL) + 8)) == NULL) { return BadAlloc; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/PsPixmap.c x11r682/xc/programs/Xserver/Xprint/ps/PsPixmap.c --- xc/programs/Xserver/Xprint/ps/PsPixmap.c 2004-08-18 20:41:40.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/PsPixmap.c 2004-12-13 06:48:41.000000000 +0100 @@ -92,7 +92,7 @@ { PixmapPtr pPixmap; - pPixmap = (PixmapPtr)xalloc(sizeof(PixmapRec)); + pPixmap = (PixmapPtr)xcalloc(1, sizeof(PixmapRec)); if( !pPixmap) return NullPixmap; pPixmap->drawable.type = DRAWABLE_PIXMAP; pPixmap->drawable.class = 0; @@ -108,20 +108,21 @@ pPixmap->devKind = 0; pPixmap->refcnt = 1; - pPixmap->devPrivate.ptr = (PsPixmapPrivPtr)xalloc(sizeof(PsPixmapPrivRec)); + pPixmap->devPrivate.ptr = (PsPixmapPrivPtr)xcalloc(1, sizeof(PsPixmapPrivRec)); if( !pPixmap->devPrivate.ptr ) { xfree(pPixmap); return NullPixmap; } - memset(pPixmap->devPrivate.ptr, 0, sizeof(PsPixmapPrivRec)); return pPixmap; } -Bool -PsDestroyPixmap(PixmapPtr pPixmap) +/* PsScrubPixmap: Remove all content from a pixmap (used by + * |PsPolyFillRect()| when the "solid fill" operation covers + * the whole pixmap) */ +void +PsScrubPixmap(PixmapPtr pPixmap) { PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pPixmap->devPrivate.ptr; DisplayListPtr disp = priv->dispList; - if( --pPixmap->refcnt ) return TRUE; while( disp ) { int i; @@ -178,6 +179,20 @@ } xfree(oldDisp); } + + priv->dispList = NULL; +} + +Bool +PsDestroyPixmap(PixmapPtr pPixmap) +{ + PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pPixmap->devPrivate.ptr; + DisplayListPtr disp = priv->dispList; + + if( --pPixmap->refcnt ) return TRUE; + + PsScrubPixmap(pPixmap); + xfree(priv); xfree(pPixmap); return TRUE; @@ -192,11 +207,11 @@ { if( disp->nelms>=DPY_BLOCKSIZE && disp->next ) continue; if( disp->nelmsnext = (DisplayListPtr)xalloc(sizeof(DisplayListRec)); + disp->next = (DisplayListPtr)xcalloc(1, sizeof(DisplayListRec)); disp->next->next = (DisplayListPtr)0; disp->next->nelms = 0; } - disp = (DisplayListPtr)xalloc(sizeof(DisplayListRec)); + disp = (DisplayListPtr)xcalloc(1, sizeof(DisplayListRec)); disp->next = (DisplayListPtr)0; disp->nelms = 0; priv->dispList = disp; @@ -480,6 +495,7 @@ for( i=0 ; inelms ; i++,elm++ ) { + if( !elm->gc ) continue; /* workaround for https://freedesktop.org/bugzilla/show_bug.cgi?id=1416 */ if( !elm->gc->fgPixel ) continue; switch(elm->type) { @@ -498,7 +514,7 @@ if( (*nElms) ) { - elms = (PsElmPtr)xalloc((*nElms)*sizeof(PsElmRec)); + elms = (PsElmPtr)xcalloc(1, (*nElms)*sizeof(PsElmRec)); if( elms ) { disp = priv->dispList; @@ -568,7 +584,7 @@ int i; PsElmPtr newElms; - newElms = (PsElmPtr)xalloc(nElms*sizeof(PsElmRec)); + newElms = (PsElmPtr)xcalloc(1, nElms*sizeof(PsElmRec)); if( !newElms ) return(newElms); for( i=0 ; iwidth) && (pRects[0].height==pDrawable->height) && + (pGC->fillStyle == FillSolid) && + (noDbeExtension == False)) + { +#ifdef DEBUG_gismobile + ErrorF("PsPolyFillRect: scrubbing pixmap...\n"); +#endif /* DEBUG_gismobile */ + /* Remove all content from the pixmap as it would be covered + * by the whole rect anyway */ + PsScrubPixmap(pDrawable); + } + } +#endif /* DBE */ + if ((gc = PsCreateAndCopyGC(pDrawable, pGC)) == NULL) return; disp = PsGetFreeDisplayBlock(priv); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/psout.c x11r682/xc/programs/Xserver/Xprint/ps/psout.c --- xc/programs/Xserver/Xprint/ps/psout.c 2004-05-06 02:24:32.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/psout.c 2004-12-13 07:35:36.000000000 +0100 @@ -422,17 +422,19 @@ } static void -S_Color(PsOutPtr self, int clr) +S_Color(PsOutPtr self, PsOutColor clr) { int ir, ig, ib; - ir = clr>>16; ig = (clr>>8)&0xFF; ib = clr&0xFF; + ir = PSOUTCOLOR_TO_REDBITS(clr); + ig = PSOUTCOLOR_TO_GREENBITS(clr); + ib = PSOUTCOLOR_TO_BLUEBITS(clr); if( ir==ig && ig==ib ) - { S_OutNum(self, (float)ir/255.); S_OutTok(self, "g", 1); } + { S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); S_OutTok(self, "g", 1); } else { - S_OutNum(self, (float)ir/255.); - S_OutNum(self, (float)ig/255.); - S_OutNum(self, (float)ib/255.); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib)); S_OutTok(self, "sc", 1); } } @@ -636,7 +638,7 @@ /* * Initialize the structure */ - psout->CurColor = 0xFFFFFFFF; + psout->CurColor = PSOUTCOLOR_NOCOLOR; psout->LineWidth = 1; psout->LineCap = PsCButt; psout->LineJoin = PsJMiter; @@ -723,7 +725,7 @@ PsOut_DirtyAttributes(PsOutPtr self) { int i; - self->CurColor = 0xFFFFFFFF; + self->CurColor = PSOUTCOLOR_NOCOLOR; self->LineWidth = -1; self->LineCap = (PsCapEnum)-1; self->LineJoin = (PsJoinEnum)-1; @@ -911,7 +913,7 @@ } void -PsOut_Color(PsOutPtr self, int clr) +PsOut_Color(PsOutPtr self, PsOutColor clr) { if( clr==self->CurColor || self->InTile>=PsStip ) return; self->CurColor = clr; @@ -926,7 +928,7 @@ void PsOut_LineAttrs(PsOutPtr self, int wd, PsCapEnum cap, PsJoinEnum join, - int nDsh, int *dsh, int dshOff, int bclr) + int nDsh, int *dsh, int dshOff, PsOutColor bclr) { int i; int same = 1; @@ -973,7 +975,10 @@ S_OutTok(self, "ds", 1); } - if( nDsh ) self->LineBClr = bclr; else bclr = -1; + if( nDsh ) + self->LineBClr = bclr; + else + bclr = PSOUTCOLOR_NOCOLOR; } void @@ -1094,7 +1099,7 @@ if( i==0 ) S_OutTok(self, "m", 0); else S_OutTok(self, "l", 0); } - if( self->LineBClr>=0 ) + if( self->LineBClr != PSOUTCOLOR_NOCOLOR ) { S_OutTok(self, "gs", 0); S_Color(self, self->LineBClr); @@ -1133,7 +1138,7 @@ S_OutNum(self, (float)w); S_OutNum(self, (float)h); S_OutTok(self, "R", 0); - if( self->LineBClr>=0 ) + if( self->LineBClr != PSOUTCOLOR_NOCOLOR ) { S_OutTok(self, "gs", 0); S_Color(self, self->LineBClr); @@ -1159,7 +1164,7 @@ S_OutNum(self, ang1+ang2); if( ang2<0 ) S_OutTok(self, "An", 0); else S_OutTok(self, "Ac", 0); - if( self->LineBClr>=0 ) + if( self->LineBClr != PSOUTCOLOR_NOCOLOR ) { S_OutTok(self, "gs", 0); S_Color(self, self->LineBClr); @@ -1169,7 +1174,7 @@ } void -PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl, int bclr) +PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl, PsOutColor bclr) { int xo = self->XOff; int yo = self->YOff; @@ -1179,21 +1184,23 @@ S_OutStr(self, text, textl); S_OutNum(self, (float)x); S_OutNum(self, (float)y); - if( bclr<0 ) S_OutTok(self, "T", 1); + if( bclr == PSOUTCOLOR_NOCOLOR ) + S_OutTok(self, "T", 1); else { - int ir = bclr>>16; - int ig = (bclr>>8)&0xFF; - int ib = bclr&0xFF; - S_OutNum(self, (float)ir/255.); - S_OutNum(self, (float)ig/255.); - S_OutNum(self, (float)ib/255.); + int ir = PSOUTCOLOR_TO_REDBITS(bclr); + int ig = PSOUTCOLOR_TO_GREENBITS(bclr); + int ib = PSOUTCOLOR_TO_BLUEBITS(bclr); + + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib)); S_OutTok(self, "Tb", 1); } } void -PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, int bclr) +PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, PsOutColor bclr) { int xo = self->XOff; int yo = self->YOff; @@ -1203,22 +1210,23 @@ S_OutStr16(self, text, textl); S_OutNum(self, (float)x); S_OutNum(self, (float)y); - if( bclr<0 ) S_OutTok(self, "T", 1); + if( bclr == PSOUTCOLOR_NOCOLOR ) + S_OutTok(self, "T", 1); else { - int ir = bclr>>16; - int ig = (bclr>>8)&0xFF; - int ib = bclr&0xFF; - S_OutNum(self, (float)ir/255.); - S_OutNum(self, (float)ig/255.); - S_OutNum(self, (float)ib/255.); + int ir = PSOUTCOLOR_TO_REDBITS(bclr); + int ig = PSOUTCOLOR_TO_GREENBITS(bclr); + int ib = PSOUTCOLOR_TO_BLUEBITS(bclr); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ig)); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ib)); S_OutTok(self, "Tb", 1); } } #ifdef BM_CACHE void /* new */ -PsOut_ImageCache(PsOutPtr self, int x, int y, long cache_id, int bclr, int fclr) +PsOut_ImageCache(PsOutPtr self, int x, int y, long cache_id, PsOutColor bclr, PsOutColor fclr) { char cacheID[10]; int xo = self->XOff; @@ -1231,22 +1239,26 @@ S_OutNum(self, (float)x); S_OutNum(self, (float)y); - if( fclr==0xFFFFFF ) + if( fclr==PSOUTCOLOR_WHITE ) { - int ir, ig, ib; - ir = bclr>>16; ig = (bclr>>8)&0xFF; ib = bclr&0xFF; + int ir = PSOUTCOLOR_TO_REDBITS(bclr); + int ig = PSOUTCOLOR_TO_GREENBITS(bclr); + int ib = PSOUTCOLOR_TO_BLUEBITS(bclr); + if( ir==ig && ig==ib ) - S_OutNum(self, (float)ir/255.); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); else S_OutNum(self, (float)0); self->RevImage = 1; } else { - int ir, ig, ib; - ir = fclr>>16; ig = (fclr>>8)&0xFF; ib = fclr&0xFF; + int ir = PSOUTCOLOR_TO_REDBITS(fclr); + int ig = PSOUTCOLOR_TO_GREENBITS(fclr); + int ib = PSOUTCOLOR_TO_BLUEBITS(fclr); + if( ir==ig && ig==ib ) - S_OutNum(self, (float)ir/255.); + S_OutNum(self, PSOUTCOLOR_BITS_TO_PSFLOAT(ir)); else S_OutNum(self, (float)0); } @@ -1272,10 +1284,10 @@ #endif void -PsOut_BeginImage(PsOutPtr self, int bclr, int fclr, int x, int y, +PsOut_BeginImage(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y, int w, int h, int sw, int sh, int format) { - int savClr = self->CurColor; + PsOutColor savClr = self->CurColor; int xo = self->XOff; int yo = self->YOff; @@ -1291,7 +1303,7 @@ S_OutTok(self, "<", 0); self->ImageFormat = format; self->RevImage = 0; - if( self->InTile==PsTile && format==1 && fclr==0xFFFFFF ) + if( self->InTile==PsTile && format==1 && fclr==PSOUTCOLOR_WHITE ) self->RevImage = 1; return; } @@ -1300,7 +1312,7 @@ if( format==1 ) { S_OutTok(self, "gs", 0); - if( fclr==0xFFFFFF ) + if( fclr==PSOUTCOLOR_WHITE ) { PsOut_Color(self, fclr); PsOut_FillRect(self, x, y, sw, sh); @@ -1332,10 +1344,10 @@ } void -PsOut_BeginImageIM(PsOutPtr self, int bclr, int fclr, int x, int y, +PsOut_BeginImageIM(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y, int w, int h, int sw, int sh, int format) { - int savClr = self->CurColor; + PsOutColor savClr = self->CurColor; int xo = self->XOff; int yo = self->YOff; @@ -1351,7 +1363,7 @@ S_OutTok(self, "<", 0); self->ImageFormat = format; self->RevImage = 0; - if( self->InTile==PsTile && format==1 && fclr==0xFFFFFF ) + if( self->InTile==PsTile && format==1 && fclr==PSOUTCOLOR_WHITE ) self->RevImage = 1; return; } @@ -1363,7 +1375,7 @@ #ifdef BM_CACHE S_OutTok(self, "g", 1); #else - if( fclr==0xFFFFFF ) + if( fclr==PSOUTCOLOR_WHITE ) { PsOut_Color(self, bclr); self->RevImage = 1; @@ -1411,7 +1423,7 @@ S_OutTok(self, ">", 1); if( self->ImageFormat==1 && self->InTile==PsTile ) { - if( self->ImgFClr==0xFFFFFF ) + if( self->ImgFClr==PSOUTCOLOR_WHITE ) { PsOut_Color(self, self->ImgFClr); PsOut_FillRect(self, self->ImgX, self->ImgY, self->SclW, self->SclH); @@ -1436,14 +1448,16 @@ self->RevImage = 0; return; } - + /* + * Bug 4639307: Move flush before "> im" to get all of bitmap into ps file. + */ + S_Flush(self); #ifdef BM_CACHE if(self->start_image) S_OutTok(self, "> im", 1); /* new */ #endif self->ImageFormat = 0; self->RevImage = 0; - S_Flush(self); #ifdef BM_CACHE if(self->start_image) { @@ -1509,7 +1523,7 @@ int PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h, PsFillEnum type, - int bclr, int fclr) + PsOutColor bclr, PsOutColor fclr) { int i; char key[64]; @@ -1585,7 +1599,7 @@ case PsOpStip: key[0] = 'o'; break; } S_OutTok(self, key, 0); S_OutTok(self, "spt", 1); - self->CurColor = 0xFFFFFFFF; + self->CurColor = PSOUTCOLOR_NOCOLOR; } void diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/ps/psout.h x11r682/xc/programs/Xserver/Xprint/ps/psout.h --- xc/programs/Xserver/Xprint/ps/psout.h 2004-04-23 20:57:56.000000000 +0200 +++ xc/programs/Xserver/Xprint/ps/psout.h 2004-12-13 06:01:15.000000000 +0100 @@ -153,6 +153,30 @@ PsFontType3 } PsFTDownloadFontType; +#ifdef PSOUT_USE_DEEPCOLOR +typedef long long PsOutColor; +#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 32) +#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 16) & 0xFFFF) +#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFFFF) +#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 65535.) +#define PSOUTCOLOR_WHITE (0xFFFFFFFFFFFFLL) +#define PSOUTCOLOR_NOCOLOR (-1LL) +#define PSOUTCOLOR_TO_RGB24BIT(clr) (((PSOUTCOLOR_TO_REDBITS(clr) >> 8) << 16) | \ + ((PSOUTCOLOR_TO_GREENBITS(clr) >> 8) << 8) | \ + ((PSOUTCOLOR_TO_BLUEBITS(clr) >> 8) << 0)) +#else +typedef long PsOutColor; +#define PSOUTCOLOR_TO_REDBITS(clr) ((clr) >> 16) +#define PSOUTCOLOR_TO_GREENBITS(clr) (((clr) >> 8) & 0xFF) +#define PSOUTCOLOR_TO_BLUEBITS(clr) ((clr) & 0xFF) +#define PSOUTCOLOR_BITS_TO_PSFLOAT(b) ((float)(b) / 255.) +#define PSOUTCOLOR_WHITE (0xFFFFFF) +#define PSOUTCOLOR_NOCOLOR (-1) +#define PSOUTCOLOR_TO_RGB24BIT(clr) ((PSOUTCOLOR_TO_REDBITS(clr) << 16) | \ + (PSOUTCOLOR_TO_GREENBITS(clr) << 8) | \ + (PSOUTCOLOR_TO_BLUEBITS(clr) << 0)) +#endif /* PSOUT_USE_DEEPCOLOR */ + #ifdef USE_PSOUT_PRIVATE typedef void *voidPtr; @@ -168,14 +192,14 @@ { FILE *Fp; char Buf[16384]; - int CurColor; + PsOutColor CurColor; int LineWidth; PsCapEnum LineCap; PsJoinEnum LineJoin; int NDashes; int *Dashes; int DashOffset; - int LineBClr; + PsOutColor LineBClr; PsRuleEnum FillRule; char *FontName; int FontSize; @@ -193,8 +217,8 @@ PsFillEnum InTile; int ImgSkip; - int ImgBClr; - int ImgFClr; + PsOutColor ImgBClr; + PsOutColor ImgFClr; int ImgX; int ImgY; int ImgW; @@ -230,11 +254,11 @@ extern void PsOut_Clip(PsOutPtr self, int clpTyp, PsClipPtr clpinf); -extern void PsOut_Color(PsOutPtr self, int clr); +extern void PsOut_Color(PsOutPtr self, PsOutColor clr); extern void PsOut_FillRule(PsOutPtr self, PsRuleEnum rule); extern void PsOut_LineAttrs(PsOutPtr self, int wd, PsCapEnum cap, PsJoinEnum join, int nDsh, int *dsh, int dshOff, - int bclr); + PsOutColor bclr); extern void PsOut_TextAttrs(PsOutPtr self, char *fnam, int siz, int iso); extern void PsOut_TextAttrsMtx(PsOutPtr self, char *fnam, float *mtx, int iso); @@ -250,12 +274,12 @@ float ang1, float ang2); extern void PsOut_Text(PsOutPtr self, int x, int y, char *text, int textl, - int bclr); -extern void PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, int bclr); + PsOutColor bclr); +extern void PsOut_Text16(PsOutPtr self, int x, int y, unsigned short *text, int textl, PsOutColor bclr); -extern void PsOut_BeginImage(PsOutPtr self, int bclr, int fclr, int x, int y, +extern void PsOut_BeginImage(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y, int w, int h, int sw, int sh, int format); -extern void PsOut_BeginImageIM(PsOutPtr self, int bclr, int fclr, int x, int y, +extern void PsOut_BeginImageIM(PsOutPtr self, PsOutColor bclr, PsOutColor fclr, int x, int y, int w, int h, int sw, int sh, int format); extern void PsOut_EndImage(PsOutPtr self); extern void PsOut_OutImageBytes(PsOutPtr self, int nBytes, char *bytes); @@ -265,7 +289,7 @@ extern void PsOut_EndFrame(PsOutPtr self); extern int PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h, - PsFillEnum type, int bclr, int fclr); + PsFillEnum type, PsOutColor bclr, PsOutColor fclr); extern void PsOut_EndPattern(PsOutPtr self); extern void PsOut_SetPattern(PsOutPtr self, void *tag, PsFillEnum type); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/Xprint/spooler.c x11r682/xc/programs/Xserver/Xprint/spooler.c --- xc/programs/Xserver/Xprint/spooler.c 2004-06-24 08:26:27.000000000 +0200 +++ xc/programs/Xserver/Xprint/spooler.c 2005-01-24 05:20:45.000000000 +0100 @@ -125,7 +125,7 @@ "| sort -u` " \ "| nawk -F: ' NF == 2 { name=$1 } " \ " NF == 1 { sub(\"^.*description\\( - undefined|=\\)\",\"\"); " \ - " printf \"%sxp-printerattr.descriptor=%s\\n\", name, $1 } '" + " printf \"%s\txp-printerattr.descriptor=%s\\n\", name, $1 } '" #define LIST_QUEUES_OTHER \ "LANG=C lpstat -v | " \ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/dix/Imakefile x11r682/xc/programs/Xserver/dix/Imakefile --- xc/programs/Xserver/dix/Imakefile 2004-04-23 21:04:43.000000000 +0200 +++ xc/programs/Xserver/dix/Imakefile 2004-12-15 05:53:05.000000000 +0100 @@ -73,7 +73,7 @@ #ifdef DarwinArchitecture #if DarwinQuartzSupport - QUARTZ_DEFINES = -DDARWIN_WITH_QUARTZ -DROOTLESS + QUARTZ_DEFINES = -DDARWIN_WITH_QUARTZ #endif #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/dix/dispatch.c x11r682/xc/programs/Xserver/dix/dispatch.c --- xc/programs/Xserver/dix/dispatch.c 2004-07-31 03:48:27.000000000 +0200 +++ xc/programs/Xserver/dix/dispatch.c 2004-12-13 02:23:05.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/dix/dispatch.c,v 1.5 2004/07/31 01:48:27 anholt Exp $ */ +/* $XdotOrg: xc/programs/Xserver/dix/dispatch.c,v 1.5.2.1 2004/12/13 01:23:05 gisburn Exp $ */ /* $Xorg: dispatch.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ /************************************************************ @@ -362,7 +362,7 @@ register int nready; register HWEventQueuePtr* icheck = checkForInput; #ifdef SMART_SCHEDULE - int start_tick; + long start_tick; #endif nextFreeClientID = 1; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/dix/main.c x11r682/xc/programs/Xserver/dix/main.c --- xc/programs/Xserver/dix/main.c 2004-06-30 22:06:53.000000000 +0200 +++ xc/programs/Xserver/dix/main.c 2004-12-08 07:02:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/dix/main.c,v 1.3 2004/06/30 20:06:53 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/dix/main.c,v 1.3.4.1 2004/12/08 06:02:34 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/dix/main.c,v 3.43 2003/10/30 21:21:02 herrb Exp $ */ /*********************************************************** @@ -689,7 +689,7 @@ if (i == MAXSCREENS) return -1; - pScreen = (ScreenPtr) xalloc(sizeof(ScreenRec)); + pScreen = (ScreenPtr) xcalloc(1, sizeof(ScreenRec)); if (!pScreen) return -1; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/fb/fb.h x11r682/xc/programs/Xserver/fb/fb.h --- xc/programs/Xserver/fb/fb.h 2004-08-11 23:14:17.000000000 +0200 +++ xc/programs/Xserver/fb/fb.h 2004-12-15 05:53:05.000000000 +0100 @@ -22,7 +22,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $XdotOrg: xc/programs/Xserver/fb/fb.h,v 1.6 2004/08/11 21:14:17 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/fb/fb.h,v 1.6.2.1 2004/12/15 04:53:05 gisburn Exp $ */ #ifndef _FB_H_ #define _FB_H_ @@ -647,7 +647,7 @@ ((WindowPtr) (pWin))->devPrivates[fbGetWinPrivateIndex()].ptr) #endif -#if defined(__DARWIN__)||defined(__CYGWIN__) +#ifdef ROOTLESS #define __fbPixOriginX(pPix) ((pPix)->drawable.x) #define __fbPixOriginY(pPix) ((pPix)->drawable.y) #else diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/fb/fbwindow.c x11r682/xc/programs/Xserver/fb/fbwindow.c --- xc/programs/Xserver/fb/fbwindow.c 2004-08-13 10:16:14.000000000 +0200 +++ xc/programs/Xserver/fb/fbwindow.c 2004-12-17 01:38:21.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/fb/fbwindow.c,v 1.4 2004/08/13 08:16:14 keithp Exp $ */ +/* $XdotOrg: xc/programs/Xserver/fb/fbwindow.c,v 1.4.2.1 2004/12/17 00:38:21 gisburn Exp $ */ /* * Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $ * @@ -122,12 +122,9 @@ { RegionRec rgnDst; int dx, dy; -#ifdef COMPOSITE + PixmapPtr pPixmap = fbGetWindowPixmap (pWin); DrawablePtr pDrawable = &pPixmap->drawable; -#else - DrawablePtr pDrawable = &WindowTable[pWin->drawable.pScreen->myNum]->drawable; -#endif dx = ptOldOrg.x - pWin->drawable.x; dy = ptOldOrg.y - pWin->drawable.y; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/compiler.h x11r682/xc/programs/Xserver/hw/xfree86/common/compiler.h --- xc/programs/Xserver/hw/xfree86/common/compiler.h 2004-08-27 21:27:12.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/common/compiler.h 2005-01-13 01:30:55.000000000 +0100 @@ -1076,7 +1076,12 @@ extern volatile unsigned char *ioBase; -# define eieio() __asm__ __volatile__ ("eieio" ::: "memory") +#if defined(linux) && defined(__powerpc64__) +# include +#endif /* defined(linux) && defined(__powerpc64__) */ +#ifndef eieio /* We deal with arch-specific eieio() routines above... */ +# define eieio() __asm__ __volatile__ ("eieio" ::: "memory") +#endif /* eieio */ static __inline__ unsigned char xf86ReadMmio8(__volatile__ void *base, const unsigned long offset) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/xf86Configure.c x11r682/xc/programs/Xserver/hw/xfree86/common/xf86Configure.c --- xc/programs/Xserver/hw/xfree86/common/xf86Configure.c 2004-08-15 17:40:19.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/common/xf86Configure.c 2004-12-15 06:22:16.000000000 +0100 @@ -731,19 +731,13 @@ for (i=0;i<4;i++) { switch (ConfiguredMonitor->det_mon[i].type) { - case DT: - case DS_STD_TIMINGS: - case DS_WHITE_P: - break; case DS_NAME: ptr->mon_modelname = xf86confrealloc(ptr->mon_modelname, strlen((char*)(ConfiguredMonitor->det_mon[i].section.name)) + 1); strcpy(ptr->mon_modelname, (char*)(ConfiguredMonitor->det_mon[i].section.name)); - break; - case DS_ASCII_STR: - case DS_SERIAL: + break; case DS_RANGES: ptr->mon_hsync[ptr->mon_n_hsync].lo = ConfiguredMonitor->det_mon[i].section.ranges.min_h; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/xf86Events.c x11r682/xc/programs/Xserver/hw/xfree86/common/xf86Events.c --- xc/programs/Xserver/hw/xfree86/common/xf86Events.c 2004-07-30 22:56:53.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/common/xf86Events.c 2004-12-15 06:36:14.000000000 +0100 @@ -49,7 +49,7 @@ */ /* $XConsortium: xf86Events.c /main/46 1996/10/25 11:36:30 kaleb $ */ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 1.3 2004/07/30 20:56:53 eich Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 1.3.2.1 2004/12/15 05:36:14 gisburn Exp $ */ /* [JCH-96/01/21] Extended std reverse map to four buttons. */ @@ -1334,6 +1334,10 @@ ErrorF("xf86VTSwitch: Leaving, xf86Exiting is %s\n", BOOLTOSTRING((dispatchException & DE_TERMINATE) ? TRUE : FALSE)); #endif +#ifdef DPMSExtension + if (DPMSPowerLevel != DPMSModeOn) + DPMSSet(DPMSModeOn); +#endif for (i = 0; i < xf86NumScreens; i++) { if (!(dispatchException & DE_TERMINATE)) if (xf86Screens[i]->EnableDisableFBAccess) @@ -1353,13 +1357,9 @@ } #endif /* !__UNIXOS2__ */ xf86EnterServerState(SETUP); - for (i = 0; i < xf86NumScreens; i++) { -#ifdef DPMSExtension - if (xf86Screens[i]->DPMSSet) - xf86Screens[i]->DPMSSet(xf86Screens[i],DPMSModeOn,0); -#endif + for (i = 0; i < xf86NumScreens; i++) xf86Screens[i]->LeaveVT(i, 0); - } + for (ih = InputHandlers; ih; ih = ih->next) xf86DisableInputHandler(ih); xf86AccessLeave(); /* We need this here, otherwise */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/xf86Init.c x11r682/xc/programs/Xserver/hw/xfree86/common/xf86Init.c --- xc/programs/Xserver/hw/xfree86/common/xf86Init.c 2004-08-20 07:22:39.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/common/xf86Init.c 2004-12-17 03:01:21.000000000 +0100 @@ -96,6 +96,7 @@ #ifdef DPMSExtension #define DPMS_SERVER #include "extensions/dpms.h" +#include "dpmsproc.h" #endif @@ -1244,7 +1245,7 @@ /* * try to deinitialize all input devices */ - if (xf86Info.pKeyboard) + if (xf86Info.kbdProc && xf86Info.pKeyboard) (xf86Info.kbdProc)(xf86Info.pKeyboard, DEVICE_CLOSE); /* @@ -1254,6 +1255,10 @@ /* Need the sleep when starting X from within another X session */ sleep(1); #endif +#ifdef DPMSExtension /* Turn screens back on */ + if (DPMSPowerLevel != DPMSModeOn) + DPMSSet(DPMSModeOn); +#endif if (xf86Screens) { if (xf86Screens[0]->vtSema) xf86EnterServerState(SETUP); @@ -1265,10 +1270,6 @@ * screen explicitely. */ xf86EnableAccess(xf86Screens[i]); -#ifdef DPMSExtension - if (xf86Screens[i]->DPMSSet) - xf86Screens[i]->DPMSSet(xf86Screens[i],DPMSModeOn,0); -#endif (xf86Screens[i]->LeaveVT)(i, 0); } } @@ -1763,8 +1764,22 @@ #endif #if XORG_VERSION_SNAP >= 900 - ErrorF(" (%d.%d.0 RC %d)", XORG_VERSION_MAJOR, XORG_VERSION_MINOR + 1, - XORG_VERSION_SNAP - 900); + /* When the patch number is 99, that signifies that the we are making + * a release candidate for a major version; however, if the patch + * number is < 99, then we are making a release candidate for the next + * point release. + */ + if (XORG_VERSION_PATCH == 99) + ErrorF(" (%d.%d.0 RC %d)", + XORG_VERSION_MAJOR, + XORG_VERSION_MINOR + 1, + XORG_VERSION_SNAP - 900); + else + ErrorF(" (%d.%d.%d RC %d)", + XORG_VERSION_MAJOR, + XORG_VERSION_MINOR, + XORG_VERSION_PATCH + 1, + XORG_VERSION_SNAP - 900); #endif #ifdef XORG_CUSTOM_VERSION diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c x11r682/xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c --- xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c 2003-11-25 20:28:33.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/common/xf86Xinput.c 2004-12-13 03:15:29.000000000 +0100 @@ -932,10 +932,15 @@ /* modeled from xf86Events.c */ if (device->ptrfeed->ctrl.threshold) { if ((abs(dx) + abs(dy)) >= device->ptrfeed->ctrl.threshold) { - valuator[0] = (dx * device->ptrfeed->ctrl.num) / - device->ptrfeed->ctrl.den; - valuator[1] = (dy * device->ptrfeed->ctrl.num) / - device->ptrfeed->ctrl.den; + local->dxremaind = ((float)dx * (float)(device->ptrfeed->ctrl.num)) / + (float)(device->ptrfeed->ctrl.den) + local->dxremaind; + valuator[0] = (int)local->dxremaind; + local->dxremaind = local->dxremaind - (float)valuator[0]; + + local->dyremaind = ((float)dy * (float)(device->ptrfeed->ctrl.num)) / + (float)(device->ptrfeed->ctrl.den) + local->dyremaind; + valuator[1] = (int)local->dyremaind; + local->dyremaind = local->dyremaind - (float)valuator[1]; } } else if (dx || dy) { diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c x11r682/xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c --- xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c 2004-08-10 00:37:22.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c 2005-01-25 03:52:42.000000000 +0100 @@ -104,9 +104,6 @@ #define PCI_MEM32_LENGTH_MAX 0xFFFFFFFF -#undef MIN -#define MIN(x,y) ((xmemBase[0] |= - (memType)PCIGETMEMORY64HIGH(pcrp->pci_base1) << 32; + (memType)PCIGETMEMORY64HIGH(pcrp->pci_base0) << 32; #else if (pcrp->pci_base1) info->memBase[0] = 0; @@ -327,7 +324,7 @@ mem64 = TRUE; #if defined(LONG64) || defined(WORD64) info->memBase[1] |= - (memType)PCIGETMEMORY64HIGH(pcrp->pci_base2) << 32; + (memType)PCIGETMEMORY64HIGH(pcrp->pci_base1) << 32; #else if (pcrp->pci_base2) info->memBase[1] = 0; @@ -348,7 +345,7 @@ mem64 = TRUE; #if defined(LONG64) || defined(WORD64) info->memBase[2] |= - (memType)PCIGETMEMORY64HIGH(pcrp->pci_base3) << 32; + (memType)PCIGETMEMORY64HIGH(pcrp->pci_base2) << 32; #else if (pcrp->pci_base3) info->memBase[2] = 0; @@ -369,7 +366,7 @@ mem64 = TRUE; #if defined(LONG64) || defined(WORD64) info->memBase[3] |= - (memType)PCIGETMEMORY64HIGH(pcrp->pci_base4) << 32; + (memType)PCIGETMEMORY64HIGH(pcrp->pci_base3) << 32; #else if (pcrp->pci_base4) info->memBase[3] = 0; @@ -390,7 +387,7 @@ mem64 = TRUE; #if defined(LONG64) || defined(WORD64) info->memBase[4] |= - (memType)PCIGETMEMORY64HIGH(pcrp->pci_base5) << 32; + (memType)PCIGETMEMORY64HIGH(pcrp->pci_base4) << 32; #else if (pcrp->pci_base5) info->memBase[4] = 0; @@ -1649,7 +1646,7 @@ m = xf86JoinResLists(m,tmp); tmp = m; while (tmp) { - tmp->block_end = MIN(tmp->block_end,PCI_MEM32_LENGTH_MAX); + tmp->block_end = min(tmp->block_end,PCI_MEM32_LENGTH_MAX); tmp = tmp->next; } } else if ((pbp->primary == pvp->bus) && diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/ddc/edid.h x11r682/xc/programs/Xserver/hw/xfree86/ddc/edid.h --- xc/programs/Xserver/hw/xfree86/ddc/edid.h 2004-04-23 21:21:03.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/ddc/edid.h 2005-01-13 01:03:59.000000000 +0100 @@ -11,7 +11,7 @@ */ #ifndef _EDID_H_ -#define _EDID_H_ 1 +#define _EDID_H_ #include "vdif.h" @@ -126,7 +126,9 @@ #define SETUP _SETUP(GET(D_INPUT)) #define _SYNC(x) (x & 0x0F) #define SYNC _SYNC(GET(D_INPUT)) -#define _GAMMA(x) ((x + 100.0)/100.0) +#define _DFP(x) (x & 0x01) +#define DFP _DFP(GET(D_INPUT)) +#define _GAMMA(x) (x == 0xff ? 1.0 : ((x + 100.0)/100.0)) #define GAMMA _GAMMA(GET(D_GAMMA)) #define HSIZE_MAX GET(D_HSIZE) #define VSIZE_MAX GET(D_VSIZE) @@ -158,20 +160,28 @@ #define T_MANU GET(E_TMANU) /* extract information from estabished timing section */ +#define _VALID_TIMING(x) !(((x[0] == 0x01) && (x[1] == 0x01)) \ + || ((x[0] == 0x00) && (x[1] == 0x00)) \ + || ((x[0] == 0x20) && (x[1] == 0x20)) ) + +#define VALID_TIMING _VALID_TIMING(c) #define _HSIZE1(x) ((x[0] + 31) * 8) #define HSIZE1 _HSIZE1(c) #define RATIO(x) ((x[1] & 0xC0) >> 6) #define RATIO1_1 0 +/* EDID Ver. 1.3 redefined this */ +#define RATIO16_10 RATIO1_1 #define RATIO4_3 1 #define RATIO5_4 2 #define RATIO16_9 3 -#define _VSIZE1(x,y) switch(RATIO(x)){ \ - case RATIO1_1: y = _HSIZE1(x); break; \ +#define _VSIZE1(x,y,r) switch(RATIO(x)){ \ + case RATIO1_1: y = ((v->version > 1 || v->revision > 2) \ + ? (_HSIZE1(x) * 10) / 16 : _HSIZE1(x)); break; \ case RATIO4_3: y = _HSIZE1(x) * 3 / 4; break; \ case RATIO5_4: y = _HSIZE1(x) * 4 / 5; break; \ case RATIO16_9: y = _HSIZE1(x) * 9 / 16; break; \ } -#define VSIZE1(x) _VSIZE1(c,x) +#define VSIZE1(x) _VSIZE1(c,x,v) #define _REFRESH_R(x) (x[1] & 0x3F) + 60 #define REFRESH_R _REFRESH_R(c) #define _ID_LOW(x) x[0] @@ -183,7 +193,7 @@ #define NEXT_STD_TIMING _NEXT_STD_TIMING(c) -/* EDID Ver. > 1.2 */ +/* EDID Ver. >= 1.2 */ #define _IS_MONITOR_DESC(x) (x[0] == 0 && x[1] == 0 && x[2] == 0 && x[4] == 0) #define IS_MONITOR_DESC _IS_MONITOR_DESC(c) #define _PIXEL_CLOCK(x) (x[0] + (x[1] << 8)) * 10000 @@ -214,8 +224,10 @@ #define V_BORDER _V_BORDER(c) #define _INTERLACED(x) ((x[17] & 0x80) >> 7) #define INTERLACED _INTERLACED(c) -#define _STEREO(x) ((x[17] & 0x60) >> 6) +#define _STEREO(x) ((x[17] & 0x60) >> 5) #define STEREO _STEREO(c) +#define _STEREO1(x) (x[17] & 0x1) +#define STEREO1 _STEREO(c) #define _SYNC_T(x) ((x[17] & 0x18) >> 4) #define SYNC_T _SYNC_T(c) #define _MISC(x) ((x[17] & 0x06) >> 2) @@ -236,6 +248,18 @@ #define MAX_H _MAX_H(c) #define _MAX_CLOCK(x) x[9] #define MAX_CLOCK _MAX_CLOCK(c) +#define _HAVE_2ND_GTF(x) (x[10] == 0x02) +#define HAVE_2ND_GTF _HAVE_2ND_GTF(c) +#define _F_2ND_GTF(x) (x[12] * 2) +#define F_2ND_GTF _F_2ND_GTF(c) +#define _C_2ND_GTF(x) (x[13] / 2) +#define C_2ND_GTF _C_2ND_GTF(c) +#define _M_2ND_GTF(x) (x[14] + (x[15] << 8)) +#define M_2ND_GTF _M_2ND_GTF(c) +#define _K_2ND_GTF(x) (x[16]) +#define K_2ND_GTF _K_2ND_GTF(c) +#define _J_2ND_GTF(x) (x[17] / 2) +#define J_2ND_GTF _J_2ND_GTF(c) #define MONITOR_NAME 0xFC #define ADD_COLOR_POINT 0xFB #define WHITEX F_CC(I_CC((GET(D_BW_LOW)),(GET(D_WHITEX)),2)) @@ -255,6 +279,7 @@ #define _WHITE_GAMMA2(x) _GAMMA(x[14]) #define WHITE_GAMMA2 _WHITE_GAMMA2(c) #define ADD_STD_TIMINGS 0xFA +#define ADD_DUMMY 0x10 #define _NEXT_DT_MD_SECTION(x) (x = (x + DET_TIMING_INFO_LEN)) #define NEXT_DT_MD_SECTION _NEXT_DT_MD_SECTION(c) @@ -264,6 +289,9 @@ /* input type */ #define DIGITAL(x) x +/* DFP */ +#define DFP1(x) x + /* input voltage level */ #define V070 0 /* 0.700V/0.300V */ #define V071 1 /* 0.714V/0.286V */ @@ -297,8 +325,12 @@ /* detailed timing misc */ #define IS_INTERLACED(x) (x) #define IS_STEREO(x) (x) -#define IS_RIGHT_ON_SYNC(x) (x & 0x01) -#define IS_LEFT_ON_SYNC(x) (x & 0x02) +#define IS_RIGHT_STEREO(x) (x & 0x01) +#define IS_LEFT_STEREO(x) (x & 0x02) +#define IS_4WAY_STEREO(x) (x & 0x03) +#define IS_RIGHT_ON_SYNC(x) IS_RIGHT_STEREO(x) +#define IS_LEFT_ON_SYNC(x) IS_LEFT_STEREO(x) + typedef unsigned int Uint; typedef unsigned char Uchar; @@ -321,6 +353,7 @@ unsigned int input_voltage:2; unsigned int input_setup:1; unsigned int input_sync:5; + unsigned int input_dfp:1; int hsize; int vsize; float gamma; @@ -368,6 +401,7 @@ unsigned int stereo:2; unsigned int sync:2; unsigned int misc:2; + unsigned int stereo_1:1; }; #define DT 0 @@ -377,6 +411,7 @@ #define DS_RANGES 0xFD #define DS_WHITE_P 0xFB #define DS_STD_TIMINGS 0xFA +#define DS_DUMMY 0x10 struct monitor_ranges { int min_v; @@ -384,6 +419,11 @@ int min_h; int max_h; int max_clock; + int gtf_2nd_f; + int gtf_2nd_c; + int gtf_2nd_m; + int gtf_2nd_k; + int gtf_2nd_j; }; struct whitePoints{ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c x11r682/xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c --- xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c 2004-08-27 14:32:14.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c 2004-12-17 02:28:14.000000000 +0100 @@ -13,16 +13,21 @@ static void get_vendor_section(Uchar*, struct vendor *); static void get_version_section(Uchar*, struct edid_version *); -static void get_display_section(Uchar*, struct disp_features *); +static void get_display_section(Uchar*, struct disp_features *, + struct edid_version *); static void get_established_timing_section(Uchar*, struct established_timings *); -static void get_std_timing_section(Uchar*, struct std_timings *); +static void get_std_timing_section(Uchar*, struct std_timings *, + struct edid_version *); static void get_dt_md_section(Uchar *, struct edid_version *, struct detailed_monitor_section *det_mon); static void copy_string(Uchar *, Uchar *); -static void get_dst_timing_section(Uchar *, struct std_timings *); +static void get_dst_timing_section(Uchar *, struct std_timings *, + struct edid_version *); static void get_monitor_ranges(Uchar *, struct monitor_ranges *); static void get_whitepoint_section(Uchar *, struct whitePoints *); static void get_detailed_timing_section(Uchar*, struct detailed_timings *); +static Bool validate_version(int scrnIndex, struct edid_version *); + xf86MonPtr xf86InterpretEDID(int scrnIndex, Uchar *block) @@ -33,15 +38,24 @@ if (! (m = xnfcalloc(sizeof(xf86Monitor),1))) return NULL; m->scrnIndex = scrnIndex; m->rawData = block; + get_vendor_section(SECTION(VENDOR_SECTION,block),&m->vendor); get_version_section(SECTION(VERSION_SECTION,block),&m->ver); - get_display_section(SECTION(DISPLAY_SECTION,block),&m->features); + if (!validate_version(scrnIndex, &m->ver)) goto error; + get_display_section(SECTION(DISPLAY_SECTION,block),&m->features, + &m->ver); get_established_timing_section(SECTION(ESTABLISHED_TIMING_SECTION,block), &m->timings1); - get_std_timing_section(SECTION(STD_TIMING_SECTION,block),m->timings2); + get_std_timing_section(SECTION(STD_TIMING_SECTION,block),m->timings2, + &m->ver); get_dt_md_section(SECTION(DET_TIMING_SECTION,block),&m->ver, m->det_mon); m->no_sections = (int)*(char *)SECTION(NO_EDID,block); + return (m); + + error: + xfree(m); + return NULL; } static void @@ -66,12 +80,16 @@ } static void -get_display_section(Uchar *c, struct disp_features *r) +get_display_section(Uchar *c, struct disp_features *r, + struct edid_version *v) { r->input_type = INPUT_TYPE; - r->input_voltage = INPUT_VOLTAGE; - r->input_setup = SETUP; - r->input_sync = SYNC; + if (!DIGITAL(r->input_type)) { + r->input_voltage = INPUT_VOLTAGE; + r->input_setup = SETUP; + r->input_sync = SYNC; + } else if (v->version > 1 || v->revision > 2) + r->input_dfp = DFP; r->hsize = HSIZE_MAX; r->vsize = VSIZE_MAX; r->gamma = GAMMA; @@ -97,15 +115,20 @@ } static void -get_std_timing_section(Uchar *c, struct std_timings *r) +get_std_timing_section(Uchar *c, struct std_timings *r, + struct edid_version *v) { int i; for (i=0;imax_clock = 0; if(MAX_CLOCK != 0xff) /* is specified? */ r->max_clock = MAX_CLOCK * 10; + if (HAVE_2ND_GTF) { + r->gtf_2nd_f = F_2ND_GTF; + r->gtf_2nd_c = C_2ND_GTF; + r->gtf_2nd_m = M_2ND_GTF; + r->gtf_2nd_k = K_2ND_GTF; + r->gtf_2nd_j = J_2ND_GTF; + } else + r->gtf_2nd_f = 0; } static void @@ -221,8 +256,21 @@ r->v_border = V_BORDER; r->interlaced = INTERLACED; r->stereo = STEREO; + r->stereo_1 = STEREO1; r->sync = SYNC_T; r->misc = MISC; } +static Bool +validate_version(int scrnIndex, struct edid_version *r) +{ + if (r->version != 1) + return FALSE; + if (r->revision > 3) { + xf86DrvMsg(scrnIndex, X_ERROR,"EDID Version 1.%i not yet supported\n", + r->revision); + return FALSE; + } + return TRUE; +} diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/ddc/print_edid.c x11r682/xc/programs/Xserver/hw/xfree86/ddc/print_edid.c --- xc/programs/Xserver/hw/xfree86/ddc/print_edid.c 2004-04-23 21:21:03.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/ddc/print_edid.c 2004-12-17 02:28:14.000000000 +0100 @@ -12,7 +12,8 @@ static void print_vendor(int scrnIndex, struct vendor *); static void print_version(int scrnIndex, struct edid_version *); -static void print_display(int scrnIndex, struct disp_features *); +static void print_display(int scrnIndex, struct disp_features *, + struct edid_version *); static void print_established_timings(int scrnIndex, struct established_timings *); static void print_std_timings(int scrnIndex, struct std_timings *); @@ -21,19 +22,23 @@ static void print_detailed_timings(int scrnIndex, struct detailed_timings *); static void print_input_features(int scrnIndex, struct disp_features *); -static void print_dpms_features(int scrnIndex, struct disp_features *); +static void print_dpms_features(int scrnIndex, struct disp_features *, + struct edid_version *v); static void print_whitepoint(int scrnIndex, struct disp_features *); - +static void print_number_sections(int scrnIndex, int); + xf86MonPtr xf86PrintEDID(xf86MonPtr m) { if (!(m)) return NULL; print_vendor(m->scrnIndex,&m->vendor); print_version(m->scrnIndex,&m->ver); - print_display(m->scrnIndex,&m->features); + print_display(m->scrnIndex,&m->features, &m->ver); print_established_timings(m->scrnIndex,&m->timings1); print_std_timings(m->scrnIndex,m->timings2); print_detailed_monitor_section(m->scrnIndex,m->det_mon); + print_number_sections(m->scrnIndex,m->no_sections); + return m; } @@ -53,7 +58,8 @@ } static void -print_display(int scrnIndex, struct disp_features *disp) +print_display(int scrnIndex, struct disp_features *disp, + struct edid_version *version) { print_input_features(scrnIndex,disp); xf86DrvMsg(scrnIndex,X_INFO,"Max H-Image Size [cm]: "); @@ -66,16 +72,18 @@ else xf86ErrorF("V-Size may change\n"); xf86DrvMsg(scrnIndex,X_INFO,"Gamma: %.2f\n", disp->gamma); - print_dpms_features(scrnIndex,disp); + print_dpms_features(scrnIndex,disp,version); print_whitepoint(scrnIndex,disp); } static void print_input_features(int scrnIndex, struct disp_features *c) { - if (DIGITAL(c->input_type)) + if (DIGITAL(c->input_type)) { xf86DrvMsg(scrnIndex,X_INFO,"Digital Display Input\n"); - else { + if (DFP1(c->input_dfp)) + xf86DrvMsg(scrnIndex,X_INFO,"DFP 1.x compatible TMDS\n"); + } else { xf86DrvMsg(scrnIndex,X_INFO,"Analog Display Input, "); xf86ErrorF("Input Voltage Level: "); switch (c->input_voltage){ @@ -111,7 +119,8 @@ } static void -print_dpms_features(int scrnIndex, struct disp_features *c) +print_dpms_features(int scrnIndex, struct disp_features *c, + struct edid_version *v) { if (c->dpms) { xf86DrvMsg(scrnIndex,X_INFO,"DPMS capabilities:"); @@ -140,6 +149,10 @@ if (PREFERRED_TIMING_MODE(c->msc)) xf86DrvMsg(scrnIndex,X_INFO, "First detailed timing is preferred mode\n"); + else if (v->version == 1 && v->revision >= 3) + xf86DrvMsg(scrnIndex,X_INFO, + "First detailed timing not preferred " + "mode in violation of standard!"); if (GFT_SUPPORTED(c->msc)) xf86DrvMsg(scrnIndex,X_INFO, "GTF timings supported\n"); @@ -234,7 +247,15 @@ if (m[i].section.ranges.max_clock != 0) xf86ErrorF(" PixClock max %i MHz\n",m[i].section.ranges.max_clock); else - xf86DrvMsg(scrnIndex,X_INFO,"\n"); + xf86ErrorF("\n"); + if (m[i].section.ranges.gtf_2nd_f > 0) + xf86DrvMsg(scrnIndex,X_INFO," 2nd GTF parameters: f: %i kHz " + "c: %i m: %i k %i j %i\n", + m[i].section.ranges.gtf_2nd_f, + m[i].section.ranges.gtf_2nd_c, + m[i].section.ranges.gtf_2nd_m, + m[i].section.ranges.gtf_2nd_k, + m[i].section.ranges.gtf_2nd_j); break; case DS_STD_TIMINGS: for (j = 0; j<5; j++) @@ -252,6 +273,9 @@ m[i].section.wp[j].white_y, m[i].section.wp[j].white_gamma); break; + case DS_DUMMY: + default: + break; } } } @@ -278,9 +302,32 @@ xf86ErrorF("v_border: %i\n",t->v_border); if (IS_STEREO(t->stereo)) { xf86DrvMsg(scrnIndex,X_INFO,"Stereo: "); - if (IS_RIGHT_ON_SYNC(t->stereo)) - xf86ErrorF("right channel on sync\n"); - else xf86ErrorF("right channel on sync\n"); + if (IS_RIGHT_STEREO(t->stereo)) { + if (!t->stereo_1) + xf86ErrorF("right channel on sync\n"); + else + xf86ErrorF("left channel on sync\n"); + } else if (IS_LEFT_STEREO(t->stereo)) { + if (!t->stereo_1) + xf86ErrorF("right channel on even line\n"); + else + xf86ErrorF("left channel on evel line\n"); + } + if (IS_4WAY_STEREO(t->stereo)) { + if (!t->stereo_1) + xf86ErrorF("4-way interleaved\n"); + else + xf86ErrorF("side-by-side interleaved"); + } } } } + +static void +print_number_sections(int scrnIndex, int num) +{ + if (num) + xf86DrvMsg(scrnIndex,X_INFO,"Number of EDID sections to follow: %i\n", + num); +} + diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/BUILD x11r682/xc/programs/Xserver/hw/xfree86/doc/BUILD --- xc/programs/Xserver/hw/xfree86/doc/BUILD 2004-09-08 03:54:29.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/BUILD 2005-02-08 01:44:26.000000000 +0100 @@ -1,9 +1,9 @@ Building the X Window System from the X.org Source Distribution - Jim Gettys and Keith Packard (for X11R6.8) + Jim Gettys and Keith Packard (for X11R6.8.2) David Dawes and Matthieu Herrb (for XFree86 4.4 RC2) - 8 September 2004 + 9 February 2005 Abstract @@ -22,62 +22,62 @@ son, flex, zlib (development package), ncurses (development package), font- config (development package), expat (development package), and Perl. -1. How to get the X11R6.8 distribution source +1. How to get the X11R6.8.2 distribution source -One way of getting the X11R6.8 source is to obtain it directly from the X.Org -CVS repository. There are several ways of doing that, and they are described -in the CVS section of our wiki The CVS tag for this -release is "XORG-6_8_0". The tag for the maintenance branch for this -release is "XORG-6_8-branch". +One way of getting the X11R6.8.2 source is to obtain it directly from the +X.Org CVS repository. There are several ways of doing that, and they are +described in the CVS section of our wiki The CVS tag +for this release is "XORG-6_8_2". The tag for the maintenance branch for +this release is "XORG-6_8-branch". -Another method of getting the X11R6.8 source is to either download the 6.8.0 -source tarballs sites from freedesktop.org using either ftp or http. The -procedure for this is as follows: +Another method of getting the X11R6.8.2 source is to either download the +6.8.2 source tarballs sites from freedesktop.org using either ftp or http. +The procedure for this is as follows: - o The X11R6.8 source is contained in the files: + o The X11R6.8.2 source is contained in the files: - X11R6.8.0-src1.tar.gz + X11R6.8.2-src1.tar.gz - X11R6.8.0-src2.tar.gz + X11R6.8.2-src2.tar.gz - X11R6.8.0-src3.tar.gz + X11R6.8.2-src3.tar.gz - X11R6.8.0-src4.tar.gz + X11R6.8.2-src4.tar.gz - X11R6.8.0-src5.tar.gz + X11R6.8.2-src5.tar.gz - X11R6.8.0-src6.tar.gz + X11R6.8.2-src6.tar.gz - X11R6.8.0-src7.tar.gz + X11R6.8.2-src7.tar.gz - These can be found at ftp://ftp.freedesktop.org/xorg/X11R6.8/src/ or - http://freedesktop.org/~xorg/X11R6.8/src/ and similar locations on - X.org mirror sites. X11R6.8.0-src4.tgz and X11R6.8.0-src5.tar.gz con- - tains the fonts. X11R6.8.0-src6.tar.gz contains the documentation - source. X11R6.8.0-src7.tar.gz contains the hardcopy documentation. - X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and X11R6.8.0-src3.tar.gz + These can be found at ftp://ftp.freedesktop.org/xorg/X11R6.8.2/src/ or + http://freedesktop.org/~xorg/X11R6.8.2/src/ and similar locations on + X.org mirror sites. X11R6.8.2-src4.tgz and X11R6.8.2-src5.tar.gz con- + tains the fonts. X11R6.8.2-src6.tar.gz contains the documentation + source. X11R6.8.2-src7.tar.gz contains the hardcopy documentation. + X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and X11R6.8.2-src3.tar.gz contains everything else. If you don't need the docs or fonts you can - get by with only X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and - X11R6.8.0-src3.tar.gz. + get by with only X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and + X11R6.8.2-src3.tar.gz. o Extract each of these files by running the following from a directory on a filesystem containing enough space (the full source requires around 305MB, and a similar amount is required in addition to this for the com- piled binaries): - gzip -d < X11R6.8.0-src1.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src1.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src2.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src2.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src3.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src3.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src4.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src4.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src5.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src5.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src6.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src6.tar.gz | tar vxf - - gzip -d < X11R6.8.0-src7.tar.gz | tar vxf - + gzip -d < X11R6.8.2-src7.tar.gz | tar vxf - All methods will produce one main source directory called xc. @@ -96,25 +96,25 @@ easy to create build problems by changing the default configuration. Check the configuration parameters specified in the xc/config/cf/README. -If you are using just the X11R6.8.0-src1.tar.gz, X11R6.8.0-src2.tar.gz and -X11R6.8.0-src3.tar.gz parts of the source dist, you will need to define +If you are using just the X11R6.8.2-src1.tar.gz, X11R6.8.2-src2.tar.gz and +X11R6.8.2-src3.tar.gz parts of the source dist, you will need to define BuildFonts to NO. 3. Using a shadow directory of symbolic links for the build A recommended practice is to use a shadow directory of symbolic links to do -the build of X11R6.8 as this allows you to keep the source directory unmodi- -fied during the build. It has the following benefits: +the build of X11R6.8.2 as this allows you to keep the source directory unmod- +ified during the build. It has the following benefits: o When you are using CVS to maintain your source tree, the update process is not disturbed by foreign files not under CVS's control. - o It is possible to build X11R6.8 for several different Operating System + o It is possible to build X11R6.8.2 for several different Operating System or architectures from the same sources, shared by read-only NFS mounts. - o It is possible to build X11R6.8 with different configuration options, by - putting a real copy of the host.def file in each build tree and by cus- - tomizing it separately in each build tree. + o It is possible to build X11R6.8.2 with different configuration options, + by putting a real copy of the host.def file in each build tree and by + customizing it separately in each build tree. To make a shadow directory of symbolic links, use the following steps: @@ -135,7 +135,7 @@ See the lndir(1) manual page for details. If lndir is not already installed on your system, you can build it manually -from the X11R6.8 sources by running the following commands: +from the X11R6.8.2 sources by running the following commands: cd xc/config/util @@ -158,9 +158,9 @@ addressed the OS-specific details, go your build directory (either the xc directory or the shadow tree created before) and run "make World" with the BOOTSTRAPCFLAGS set as described in the OS-specific README (if necessary, but -most systems supported by X11R6.8 don't need BOOTSTRAPCFLAGS). It is advis- -able to redirect stdout and stderr to World.Log so that you can track down -problems that might occur during the build. +most systems supported by X11R6.8.2 don't need BOOTSTRAPCFLAGS). It is +advisable to redirect stdout and stderr to World.Log so that you can track +down problems that might occur during the build. With Bourne-like shells (Bash, the Korn shell, zsh, etc.) use a command like: @@ -197,7 +197,11 @@ To do the install, run "make install" and "make install.man". Make sure you have enough space in /usr/X11R6 for the install to succeed. If you want to install on a filesystem other than /usr, make a symbolic link to /usr/X11R6 -before installing. +before installing. To install the tree into a different directory than +/usr/X11R6 you can specify DESTDIR: + + make install DESTDIR= make install.man DEST- + DIR= Cross compiling is supported if the appropriate config files for your target platforms exist. You must have the compiler toolchain installed for your tar- @@ -231,7 +235,7 @@ 6. Other useful make targets There are some other useful targets defined in the top level Makefile of -X11R6.8: +X11R6.8.2: o Everything after a make World, make Everything does everything a make World does, except the cleaning of the tree. It is a way to quickly @@ -247,11 +251,11 @@ make depend make - to rebuild the X11R6.8. + to rebuild the X11R6.8.2. o distclean does a full cleaning of the source tree, removing all gener- ated files. After a make distclean, make World is the only option to - rebuild X11R6.8. + rebuild X11R6.8.2. o includes generates all generated header files and in-tree symbolic links needed by the build. These files are removed by a make clean. @@ -268,4 +272,4 @@ $Id$ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/BUILD,v 1.4 2004/09/08 01:54:29 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/BUILD,v 1.4.2.3 2005/02/08 00:44:26 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/DESIGN x11r682/xc/programs/Xserver/hw/xfree86/doc/DESIGN --- xc/programs/Xserver/hw/xfree86/doc/DESIGN 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/DESIGN 2005-02-08 01:44:27.000000000 +0100 @@ -1,7 +1,7 @@ XFree86 server 4.x Design (DRAFT) The XFree86 Project, Inc - Updates for X11R6.8 by Jim Gettys + Updates for X11R6.8.2 by Jim Gettys 19 December 2003 @@ -6370,4 +6370,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DESIGN.sgml,v 1.53 dawes Exp $ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/DESIGN,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/DESIGN,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/Install x11r682/xc/programs/Xserver/hw/xfree86/doc/Install --- xc/programs/Xserver/hw/xfree86/doc/Install 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/Install 2005-02-08 01:44:27.000000000 +0100 @@ -1,13 +1,13 @@ - Installation Details for X11R6.8 + Installation Details for X11R6.8.2 The X.Org Foundation - 8 September 2004 + 9 February 2005 Abstract How to install the X.Org Foundation's X Window System release ver- - sion X11R6.8. + sion X11R6.8.2. 1. Introduction @@ -28,4 +28,4 @@ $Id$ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/Install,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/Install,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/OS2.Notes x11r682/xc/programs/Xserver/hw/xfree86/doc/OS2.Notes --- xc/programs/Xserver/hw/xfree86/doc/OS2.Notes 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/OS2.Notes 2005-02-08 01:44:27.000000000 +0100 @@ -1,4 +1,4 @@ - Notes on Rebuilding X11R6.8/OS2 from Scratch + Notes on Rebuilding X11R6.8.2/OS2 from Scratch Holger Veit @@ -16,11 +16,11 @@ Please also read README.OS2 for end-user information, and set at least the environment variables described there. -At the current time, the most recent version available is X11R6.8 This is a +At the current time, the most recent version available is X11R6.8.2 This is a full and unrestricted version which comes with complete source code. 4.0 is a highly experimental release, so many features that might have worked in ear- lier versions, may now no longer work, or work differently. Be aware that -for OS/2, X11R6.8 is considered to be alpha software. +for OS/2, X11R6.8.2 is considered to be alpha software. 2. Tools required @@ -69,8 +69,9 @@ critical is only EMX/gcc and GNU make. Note that the second GCC implementa- tion which might still be available from some archives is NOT compatible. -Furthermore, you need the X11R6.8 sources. These are available from the com- -mon X.org repositories. Look into a directory which is often named /pub/R6.8. +Furthermore, you need the X11R6.8.2 sources. These are available from the +common X.org repositories. Look into a directory which is often named +/pub/R6.8.2. 3. Compiling and Installing @@ -145,14 +146,15 @@ servers). Certain changes must be set to the following values: o Disable if not already done any PC98 server; PC98 (Japanese - X11R6.8) does not work yet. Porters from Japan are welcome! + X11R6.8.2) does not work yet. Porters from Japan are welcome! o #define WacomSupport NO #define ElographicsSupport NO Both options are not yet supported. o Tcl* and Tk* don't need to be set explicitly. Reasonable defaults are in the other config files, provided you have a complete - X11R6.8/OS2 binary tree with the tcl/tk runtime support installed. + X11R6.8.2/OS2 binary tree with the tcl/tk runtime support + installed. o #define BuildDynamicLoading NO This does not work. @@ -165,8 +167,8 @@ 9. Set the environment variable X11ROOT to something different than it is; otherwise the installation process will overwrite your original - X11R6.8/OS2 installation. If you have not set this variable, go back to - the prefix section of this document: you have forgotten something. + X11R6.8.2/OS2 installation. If you have not set this variable, go back + to the prefix section of this document: you have forgotten something. 10. Copy the file xc/pro- grams/Xserver/hw/xfree86/etc/bindist/OS2/host.def.os2 to the location @@ -200,13 +202,13 @@ lation. This is no problem and has no effect on the rest of the system. - 2. The imake.exe which is installed in \X11R6.8\bin is usually + 2. The imake.exe which is installed in \X11R6.8.2\bin is usually defective. The one which was built initially and installed in the root directory of the drive where you have the source tree is - okay. So simply copy this \imake.exe to the \X11R6.8\bin direc- + okay. So simply copy this \imake.exe to the \X11R6.8.2\bin direc- tory manually. Some day this might be fixed. Well, you see, this was quite easy :-) -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/OS2.Notes,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/OS2.Notes,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README x11r682/xc/programs/Xserver/hw/xfree86/doc/README --- xc/programs/Xserver/hw/xfree86/doc/README 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README 2005-02-09 00:54:04.000000000 +0100 @@ -1,30 +1,30 @@ - README for X11R6.8 + README for X11R6.8.2 The X.Org Foundation - 8 September 2004 + 9 February 2005 Abstract - X11R6.8 is an Open Source version of the X Window System that sup- - ports many UNIX(R) and UNIX-like operating systems (such as Linux, - FreeBSD, NetBSD, OpenBSD and Solaris x86) on Intel and other plat- - forms. This version is compatible with X11R6.7 and other X window - system implementations which support the X11R6 standard. - -1. What is X11R6.8? - -X11R6.8 is the eighth full release in the X11R6 series. - -X11R6.8 is the current X.Org Foundation release series. The core of X11R6.8 -is a modular X server. The 6.8 version is a new release that includes addi- -tional hardware support, functional enhancements and bug fixes. Specific -release enhancements can be viewed in the Release Notes. + X11R6.8.2 is an Open Source version of the X Window System that + supports many UNIX(R) and UNIX-like operating systems (such as + Linux, FreeBSD, NetBSD, OpenBSD and Solaris x86) on Intel and other + platforms. This version is compatible with X11R6.8.1 and other X + window system implementations which support the X11R6 standard. + +1. What is X11R6.8.2? + +X11R6.8.2 is the eighth full release in the X11R6 series. + +X11R6.8.2 is the current X.Org Foundation release series. The core of +X11R6.8.2 is a modular X server. The 6.8.2 version is a new release that +includes additional hardware support, functional enhancements and bug fixes. +Specific release enhancements can be viewed in the Release Notes. -Most modern PC video hardware is supported in X11R6.8, and most PC video +Most modern PC video hardware is supported in X11R6.8.2, and most PC video hardware that isn't supported explicitly can be used with the "vesa" driver. -The Release Notes has a table showing the drivers provided with X11R6.8, and -links to related documentation. +The Release Notes has a table showing the drivers provided with X11R6.8.2, +and links to related documentation. The X.Org Foundation X releases are produced by the X.Org Foundation. The X.Org Foundation has been formed as a Delaware corporation organized to oper- @@ -34,11 +34,11 @@ is free to all participants. Applications for Membership are now being accepted, and active participants in the further development of the X Window Technology are invited to complete a membership application -. The X11R6.8 codebase -forms the second X window system release since the formation of the X.org -foundataion and includes code from the X Consortium, the Open Group and the -XFree86[tm] project. This release is dedicated to the greater X community, -developers and users alike. +. The X11R6.8.2 code- +base forms the fourth X window system release since the formation of the +X.org foundataion and includes code from the X Consortium, the Open Group and +the XFree86[tm] project. This release is dedicated to the greater X commu- +nity, developers and users alike. 2. Licensing @@ -96,38 +96,38 @@ using the xorg component. This will ensure that they are included in future releases. -6. How to get X11R6.8 +6. How to get X11R6.8.2 -X11R6.8 can be found from the X.Org Foundation wiki at +X11R6.8.2 can be found from the X.Org Foundation wiki at , and at mirrors of this server. Information about obtaining and installing binary distributions of this release can be found in the Installation Document. Information about obtaining the release in source form is given below. -The source for version 6.8.0 is split into seven tarballs: +The source for version 6.8.2 is split into seven tarballs: - X11R6.8.0-src1.tar.gz - X11R6.8.0-src2.tar.gz - X11R6.8.0-src3.tar.gz - X11R6.8.0-src4.tar.gz - X11R6.8.0-src5.tar.gz - X11R6.8.0-src6.tar.gz - X11R6.8.0-src7.tar.gz + X11R6.8.2-src1.tar.gz + X11R6.8.2-src2.tar.gz + X11R6.8.2-src3.tar.gz + X11R6.8.2-src4.tar.gz + X11R6.8.2-src5.tar.gz + X11R6.8.2-src6.tar.gz + X11R6.8.2-src7.tar.gz The first three contain everything except the fonts and general X11 documen- -tation. Those three are sufficient for building X11R6.8 if you already have -a set of fonts. The fourth and fifth contain the fonts. The sixth contains -the source for the general X11 documentation. The seventh contains the gen- -eral X11 documentation in hardcopy format. +tation. Those three are sufficient for building X11R6.8.2 if you already +have a set of fonts. The fourth and fifth contain the fonts. The sixth con- +tains the source for the general X11 documentation. The seventh contains the +general X11 documentation in hardcopy format. -To format the X11R6.8 documentation use the latest version of our doctools +To format the X11R6.8.2 documentation use the latest version of our doctools package available from the Xorg CVS repository's "doctools" module. The X source code for this and all releases/snapshots as well as development versions can also be accessed via the Freedesktop.org CVS repository. It's also possible to browse the freedesktop CVS repository . The CVS tag for this version is -"XORG-6_8_0". The CVS tag for the stable branch for this release is +"XORG-6_8_2". The CVS tag for the stable branch for this release is "XORG-6_8-branch". To check out the latest development version, don't spec- ify any tag. @@ -144,4 +144,4 @@ $Id$. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README,v 1.3.2.4 2005/02/08 23:54:04 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.DECtga x11r682/xc/programs/Xserver/hw/xfree86/doc/README.DECtga --- xc/programs/Xserver/hw/xfree86/doc/README.DECtga 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.DECtga 2005-02-08 01:44:27.000000000 +0100 @@ -1,13 +1,13 @@ Information for DEC 21030 Users (aka TGA) The XFree86 Project, Inc. - Updates for X11R6.8 by Jim Gettys + Updates for X11R6.8.2 by Jim Gettys March 25th, 2004 1. DEC 21030 - o The DEC 21030 is supported by X11R6.8. The driver is now partially + o The DEC 21030 is supported by X11R6.8.2. The driver is now partially accelerated. The built-in graphics on the Multia is supported in 8-plane mode, and PCI cards with 8 or 16 MB framebuffers are supported in 24-plane mode. TGA2 (aka PowerStorm 3D30/4D20) cards are not cur- @@ -64,4 +64,4 @@ o Tim Rowley, -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.DECtga,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.DECtga,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.Darwin x11r682/xc/programs/Xserver/hw/xfree86/doc/README.Darwin --- xc/programs/Xserver/hw/xfree86/doc/README.Darwin 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.Darwin 2005-02-08 01:44:27.000000000 +0100 @@ -37,18 +37,18 @@ other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background. -From the console, the Darwin port of X11R6.8 uses the IOKit for device driver -loading and discovery, rather than the X11R6.8 module loader. Because of -this, the X11R6.8 configuration file is not used on Darwin or Mac OS X sys- -tems. The descriptions found elsewhere of devices supported by X11R6.8 for -other operating systems also do not apply. - -X11R6.8 for Darwin or Mac OS X will work with any video card that you have an -IOKit driver for. If you are running Mac OS X, this typically means any card -that has been shipped by Apple. If a card works for you with the Mac OS X -GUI, it will work on the same machine with X11R6.8. If you have a pure Darwin -installation, you may need to download additional third-party drivers from -Apple's Darwin site. IOKit drivers are typically installed in /Sys- +From the console, the Darwin port of X11R6.8.2 uses the IOKit for device +driver loading and discovery, rather than the X11R6.8.2 module loader. +Because of this, the X11R6.8.2 configuration file is not used on Darwin or +Mac OS X systems. The descriptions found elsewhere of devices supported by +X11R6.8.2 for other operating systems also do not apply. + +X11R6.8.2 for Darwin or Mac OS X will work with any video card that you have +an IOKit driver for. If you are running Mac OS X, this typically means any +card that has been shipped by Apple. If a card works for you with the Mac +OS X GUI, it will work on the same machine with X11R6.8.2. If you have a pure +Darwin installation, you may need to download additional third-party drivers +from Apple's Darwin site. IOKit drivers are typically installed in /Sys- tem/Library/Extensions/ or /Library/Extensions/. Multi-button and scroll wheel mouse support works well with all USB mice that @@ -57,11 +57,11 @@ 3. Getting Started -Following are instructions for building and running your own copy of X11R6.8. -The procedure for getting your X server up and running on Darwin and Mac OS X -are very similar. Where there are differences I have noted them below. Note -that to build X11R6.8 for yourself on Mac OS X, you need to install the -Developers' Tools. +Following are instructions for building and running your own copy of +X11R6.8.2. The procedure for getting your X server up and running on Darwin +and Mac OS X are very similar. Where there are differences I have noted them +below. Note that to build X11R6.8.2 for yourself on Mac OS X, you need to +install the Developers' Tools. /Applications. @@ -93,10 +93,10 @@ Wait for all the files to complete downloading. -3.2 Build X11R6.8 +3.2 Build X11R6.8.2 -Once you have everything ready it is easy to build and install X11R6.8. From -the command line: +Once you have everything ready it is easy to build and install X11R6.8.2. +From the command line: cd sandbox/xc make World >& world.log @@ -126,21 +126,21 @@ specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell. -In addition you may also want to add the man pages from X11R6.8 to the list +In addition you may also want to add the man pages from X11R6.8.2 to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in /usr/X11R6/man and the MANPATH environment variable con- tains the list of directories to search. 4.2 Starting the X Server -On Mac OS X, you can run X11R6.8 from the Darwin text console or in parallel -with Aqua. To get to the text console in Mac OS X you need to logout and type -``>console'' as the user name. This will shutdown Core Graphics and bring up -the console login prompt. Login again as your user. From the text console -you can start the X Window System by typing ``exec startx''. +On Mac OS X, you can run X11R6.8.2 from the Darwin text console or in paral- +lel with Aqua. To get to the text console in Mac OS X you need to logout and +type ``>console'' as the user name. This will shutdown Core Graphics and +bring up the console login prompt. Login again as your user. From the text +console you can start the X Window System by typing ``exec startx''. -When you are ready to quit X11R6.8 type ``exit'' in the main terminal window -or quit with the window manager if you have one running. Unfortunately in +When you are ready to quit X11R6.8.2 type ``exit'' in the main terminal win- +dow or quit with the window manager if you have one running. Unfortunately in IOKit mode, the X server does not shutdown correctly and if you did not start with ``exec startx'', you will get an apparently frozen screen with only a spinning beachball cursor on it. Nothing you type shows up on the screen, but @@ -149,12 +149,12 @@ at the text console login prompt. With Mac OS X, Core Graphics will restart and you should be given a login window. -To start X11R6.8 in Quartz mode you can launch the XDarwin application in the -/Applications folder, or from the command line type ``startx -- -quartz''. By -default this will give you a mode picker to choose between full screen or -rootless mode. You can change the default to always use a particular mode in -the preferences, or you can specify the ``-fullscreen'' or ``-rootless'' -options on the command line instead of ``-quartz''. +To start X11R6.8.2 in Quartz mode you can launch the XDarwin application in +the /Applications folder, or from the command line type ``startx -- +-quartz''. By default this will give you a mode picker to choose between full +screen or rootless mode. You can change the default to always use a particu- +lar mode in the preferences, or you can specify the ``-fullscreen'' or +``-rootless'' options on the command line instead of ``-quartz''. 4.3 Double-clickable X11 Executables @@ -182,10 +182,10 @@ The X Window System is very customizable and you will certainly want to change some things. There is a lot you can do to control how your windows look, how the windows are moved, resized, etc. You will likely want to get a -fancier window manager than twm, which is included with X11R6.8. The .xinitrc -file in your home directory controls what programs are run when you start the -X Window System. You can find a sample .xinitrc file in /etc/X11/xinit/xini- -trc. +fancier window manager than twm, which is included with X11R6.8.2. The .xini- +trc file in your home directory controls what programs are run when you start +the X Window System. You can find a sample .xinitrc file in +/etc/X11/xinit/xinitrc. There are many window managers that have been ported to Darwin. The following pages contain collections of window managers and other X window system @@ -204,4 +204,4 @@ Generated from XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/Darwin.sgml,v 1.2 eich Exp $ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.Darwin,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.Darwin,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.I128 x11r682/xc/programs/Xserver/hw/xfree86/doc/README.I128 --- xc/programs/Xserver/hw/xfree86/doc/README.I128 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.I128 2005-02-08 01:44:27.000000000 +0100 @@ -40,8 +40,8 @@ file. When running the xorgcfg or xorgconfig programs one merely needs to select an I128 card so that the correct server will be used. One need not and should not specify a RAMDAC, clockchip or allow the setup program to -probe for clocks. The driver will auto-detect the amount of video ram pre- -sent. +probe for clocks. The driver will auto-detect the amount of video ram +present. The following Section "Device" options are supported by the I128 driver: @@ -98,4 +98,4 @@ o Galen Brooks, -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.I128,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.I128,v 1.3.2.1 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.LynxOS x11r682/xc/programs/Xserver/hw/xfree86/doc/README.LynxOS --- xc/programs/Xserver/hw/xfree86/doc/README.LynxOS 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.LynxOS 2005-02-08 01:44:27.000000000 +0100 @@ -1,54 +1,54 @@ - README for X11R6.8 on LynxOS + README for X11R6.8.2 on LynxOS Thomas Mueller 25 August 2004 -1. What and Where is X11R6.8? +1. What and Where is X11R6.8.2? -X11R6.8 is a port of X11R6.4 that supports several versions of Intel-based +X11R6.8.2 is a port of X11R6.4 that supports several versions of Intel-based Unix. It is derived from XFree86 4.4 rc2 which was derived from X386 1.2, which was the X server distributed with X11R5. This release consists of many new features and performance improvements as well as many bug fixes. See the Copyright Notice. -Building of this X11R6.8 version has been tested on `LynxOS 3.1.0a i386' and -`LynxOS 4.0.0 i386'. +Building of this X11R6.8.2 version has been tested on `LynxOS 3.1.0a i386' +and `LynxOS 4.0.0 i386'. -Previous releases of X11R6.8 supported LynxOS on the x86 and on the PowerPC +Previous releases of X11R6.8.2 supported LynxOS on the x86 and on the PowerPC platform. Building on PowerPC platforms has not been tested recently. -2. Installing X11R6.8 +2. Installing X11R6.8.2 Please refer to the Installation Document for detailed installation instruc- tions. It may be necessary to increase the process stack limit in order to build -X11R6.8 and run X11R6.8 on your system. Edit /etc/startab and reboot your +X11R6.8.2 and run X11R6.8.2 on your system. Edit /etc/startab and reboot your system to make the changes active before you begin the installation. Also, be sure to include /usr/X11R6/bin in your PATH environment variable. -Refer to the next section Running X11R6.8 (section 3., page 1) for further -information on necessary configuration steps before running X11R6.8 on +Refer to the next section Running X11R6.8.2 (section 3., page 1) for further +information on necessary configuration steps before running X11R6.8.2 on LynxOS. -2.1 Accessing X11R6.8 manual pages +2.1 Accessing X11R6.8.2 manual pages Include /usr/X11R6/man in the MANPATH environment variable or add the direc- tory /usr/X11R6/man to /usr/Lib/man.config -3. Running X11R6.8 +3. Running X11R6.8.2 This section describes the changes to the LynxOS environment which may be -necessary to successfully run X11R6.8. +necessary to successfully run X11R6.8.2. 3.1 System tuning 3.1.1 Tunable parameters -To reasonably run X11R6.8 you may have to adjust a few system parameters. +To reasonably run X11R6.8.2 you may have to adjust a few system parameters. On LynxOS 3.1.0 and 4.0.0 include a line @@ -70,9 +70,9 @@ 3.1.4 MTRR device driver If you're using an Intel PentiumPRO or Pentium II (or higher) class CPU you -might want to install the MTRR device driver. This driver enables the X11R6.8 -X server to manipulate the CPU memory type range registers which may improve -performance on certain systems. +might want to install the MTRR device driver. This driver enables the +X11R6.8.2 X server to manipulate the CPU memory type range registers which +may improve performance on certain systems. To install the driver follow these steps: @@ -96,12 +96,12 @@ # make install # reboot -N -3.2 Mouse support in X11R6.8 +3.2 Mouse support in X11R6.8.2 -X11R6.8 includes support for PnP mice (see also Mouse Support in X11R6.8). -The current LynxOS TTY device driver doesn't allow the necessary manipulation -of the RTS line and therefore the support for PnP mice has been disabled for -LynxOS. +X11R6.8.2 includes support for PnP mice (see also Mouse Support in +X11R6.8.2). The current LynxOS TTY device driver doesn't allow the necessary +manipulation of the RTS line and therefore the support for PnP mice has been +disabled for LynxOS. 3.3 PS/2 mouse drivers @@ -152,30 +152,30 @@ 3.5 X Server debug diagnostics output and other VT peculiarities -Output made by the X11R6.8 X on its stdout or stderr will be lost after the -server switches to graphics mode. The X11R6.8 server stores its output in +Output made by the X11R6.8.2 X on its stdout or stderr will be lost after the +server switches to graphics mode. The X11R6.8.2 server stores its output in /usr/adm/Xorg.n.log (where n is the screen number). When the X server is running output made to other consoles will be lost. After server shutdown the screen contents of other consoles may be inconsis- tent with what one would expect (i.e. random). -4. Compiling the X11R6.8 Distribution +4. Compiling the X11R6.8.2 Distribution The next sections contain LynxOS specific notes with respect to the build process. 4.1 Disk space requirements -Currently there is no support for shared libraries in the LynxOS X11R6.8 +Currently there is no support for shared libraries in the LynxOS X11R6.8.2 port. A complete binary installation along with manual pages will require approximately 250 MBytes of disk space. To compile the system you will need at least 350 MBytes of free disk space. 4.2 Changes to system environment (LynxOS x86) -Before compiling the X11R6.8 distribution you will have to make a few little -adjustments to your system: +Before compiling the X11R6.8.2 distribution you will have to make a few lit- +tle adjustments to your system: o If not already installed, on your `LynxOS 3.1.0a' system create a shell script named /lib/cpp as follows: @@ -218,24 +218,24 @@ make World -to compile X11R6.8. After some time (and hopefully a successful build of the -X11R6.8 system) you can install the software using +to compile X11R6.8.2. After some time (and hopefully a successful build of +the X11R6.8.2 system) you can install the software using make install You must be logged in as super-user (root) when you invoke `make install'. -4.4 Installing X11R6.8 manual pages +4.4 Installing X11R6.8.2 manual pages LynxOS uses cat-able manual pages, and because a doc preparation system is definitely not a vital component of a real-time operating system you must first install groff-1.09 (or newer). -X11R6.8 manual pages may be installed using +X11R6.8.2 manual pages may be installed using make install.man -The index and whatis database for the X11R6.8 manual pages will be created +The index and whatis database for the X11R6.8.2 manual pages will be created automatically. If you already have a whatis database or index file in the destination directories you should perform a sort/uniq operation to remove duplicate entries: @@ -250,4 +250,4 @@ mv /tmp/tmpfile /usr/X11R6/man/whatis -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.LynxOS,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.LynxOS,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.NetBSD x11r682/xc/programs/Xserver/hw/xfree86/doc/README.NetBSD --- xc/programs/Xserver/hw/xfree86/doc/README.NetBSD 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.NetBSD 2005-02-08 01:44:27.000000000 +0100 @@ -1,10 +1,10 @@ - README for X11R6.8 on NetBSD + README for X11R6.8.2 on NetBSD Rich Murphey, David Dawes, Marc Wandschneider, Mark Weaver, Matthieu Herrb -1. What and Where is X11R6.8? +1. What and Where is X11R6.8.2? -X11R6.8 is an Open Source version of the X Window System that supports sev- +X11R6.8.2 is an Open Source version of the X Window System that supports sev- eral UNIX(R) and UNIX-like operating systems (such as Linux, the BSDs and Solaris x86) on Intel and other platforms. This version is compatible with X11R6.6, and is based on the XFree86 4.4.0RC2 code base, which, in turn was @@ -12,16 +12,16 @@ See the Copyright Notice. -The sources for X11R6.8 are available from: +The sources for X11R6.8.2 are available from: http://wiki.x.org -X11R6.8 also builds on other NetBSD architectures. See section Building on +X11R6.8.2 also builds on other NetBSD architectures. See section Building on other architectures (section 7.4, page 1) for details. 2. New OS dependent features -See the Release Notes for non-OS dependent new features in X11R6.8. +See the Release Notes for non-OS dependent new features in X11R6.8.2. 2.1 New OS dependent features in 4.2.0 @@ -94,7 +94,7 @@ 4.1 About mouse configuration -X11R6.8 has support for the mouse driver included in the wscons console +X11R6.8.2 has support for the mouse driver included in the wscons console driver introduced by NetBSD 1.4. Specify ``wsmouse'' as the protocol and ``/dev/wsmouse0'' as the device in /etc/X11/xorg.conf if you're using NetBSD 1.4 or later with a PS/2 mouse. @@ -210,14 +210,14 @@ X servers can take advantage (or require) linear access to the display mem- ory. -Most X11R6.8 card drivers require linear memory access. There are two ways +Most X11R6.8.2 card drivers require linear memory access. There are two ways to allow X to access linear memory: The first way is to disable the kernel security feature by adding ``option INSECURE'' in the kernel configuration file and build a new kernel. The second way is to install the aperture driver, included in source form in -xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar in the X11R6.8 source dis- +xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar in the X11R6.8.2 source dis- tribution. Unpack it in a new directory of your choice by running: sh apNetBSD.shar @@ -359,4 +359,4 @@ vatzis, Jack Velte, Nate Williams and Pace Willison. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.NetBSD,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.NetBSD,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD x11r682/xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD --- xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD 2005-02-08 01:44:27.000000000 +0100 @@ -1,119 +1,40 @@ - README for X11R6.8 on OpenBSD + README for X11R6.8.2 on OpenBSD Matthieu Herrb - Last modified on: 9 December 2003; updated 25 March 2004 by Jim Gettys for - X11R6.8 + Last modified on: 4 February 2005. -1. What and Where is X11R6.8? +1. What and Where is X11R6.8.2? -The X.org Foundation X11R6.8 is an Open Source version of the X Window System -that supports several UNIX(R) and UNIX-like operating systems (such as Linux, -the BSDs and Solaris x86) on Intel and other platforms. +The X.org Foundation X11R6.8.2 is an Open Source version of the X Window Sys- +tem that supports several UNIX(R) and UNIX-like operating systems (such as +Linux, the BSDs and Solaris x86) on Intel and other platforms. See the Copyright Notice. -The sources for X11R6.8 are available from +The sources for X11R6.8.2 are available from http://wiki.x.org -http://wiki.x.org - -X11R6.8 also builds on other OpenBSD architectures. See section Building on -other architectures (section 8., page 1) for details. +X11R6.8.2 builds on most architectures supported by OpenBSD. See section +Building on other architectures (section 7., page 1) for details. 2. Bug Reports for This Document -Use the X.org Bugzilla at urlnam to -submit comments or suggestions about this file, using the xorg product. +Use the X.org Bugzilla at http://bugs.freedesktop.org to submit comments or +suggestions about this file, using the xorg product. 3. New OS dependent features -See the Release Notes for non-OS dependent new features in X11R6.8. - -3.1 New OS related features - - o The IPv6 support is enabled on OpenBSD, but XDMCP over IPv6 is not cur- - rently enabled since the code uses IPv6 mapped IPv4 addresses which are - not supported on OpenBSD. - - o The userland part of DRI is enabled and built. Now waiting for someone - to port the kernel modules... - - o All major revisions of the shared libraries are incremented on OpenBSD - 3.3 and later, to support the API changes introduced by gcc stack pro- - tector. - -3.2 New OS related features in 4.3 - - o Support for some VGA cards on OpenBSD/alpha - -3.3 New OS dependent features in 4.2 - - o Support for OpenBSD/macppc on the ATI Rage128 based Power Macintoshes. - - o Support for building clients on OpenBSD/sparc64. - -3.4 New OS dependent features in 4.0.3 - - o Support for the wscons console driver in post 2.8 OpenBSD. - - o A fix for multi-threaded libraries support. - -3.5 New OS dependent features in 4.0.2 - - o Support for the OpenBSD ports tree, - - o Preliminary support for the macppc architecture (clients build and work, - the server doesn't work yet), - - o xdm now writes an utmp entry, - - o startx now creates an Xauthority magic cookie for the display. - -3.6 New OS dependent features in 4.0.1 - - o Several features from the OpenBSD X11 tree were merged into xdm: +See the Release Notes for non-OS dependent new features in X11R6.8.2. - o support for Kerberos IV authentication + o Switch the the Xinput-aware kbd driver for keyboard input - o use the arc4random(4) random number generator +3.1 New OS related features in X.Org 6.8 - o add a new resource "allowRootLogin", which can be used to disable - root logins through xdm + o Support for Propolice in modules. - o log failed logins to syslogd + o Server support for OpenBSD/amd64. - o verify that the shell is valid using /etc/shell - - o verify that the account hasn't expired - - o The Xsun server can be built again on OpenBSD/sparc. - -3.7 New OS dependent features in 4.0 - - o Multi-thread safe libraries are built by default on OpenBSD 2.6 and - later, - - o Preliminary APM support. - -3.8 New OS dependent features in 3.9.18 - - o Support for USB mices has been added on OpenBSD. - - o Soft-booting secondary cards through the int10 BIOS interface is now - possible using the x86emu real mode emulator. - -3.9 New OS dependent features in 3.9.17 - - o Silken mouse is supported for serial mices, and, under post 2.6 OpenBSD- - current for PS/2 mices. - - o MTRR Write Combining is enabled under post 2.6 OpenBSD-current. - -4. Installing the Binaries - -Refer to the Installation Document for detailed installation instructions. - -5. Configuring X for Your Hardware +4. Configuring X for Your Hardware The /etc/X11/xorg.conf file tells the X server what kind of monitor, video card and mouse you have. You must create it to tell the server what specific @@ -123,7 +44,7 @@ o Your mouse type, baud rate and its /dev entry. - o The video card's chipset (e.g. ET4000, S3, etc). + o The video card's chipset (e.g. ATI Radeon, nVidia GeForce 4/MX etc). o Your monitor's sync frequencies. @@ -138,33 +59,28 @@ Once you've set up a xorg.conf file, you can fine tune the video modes with the xvidtune utility. -5.1 About mouse configuration +4.1 About mouse configuration -X11R6.8 has support for the mouse driver included in the new wscons console -driver introduced by OpenBSD-2.9. Specify ``wsmouse'' as the protocol and -``/dev/wsmouse0'' as the device in /etc/X11/xorg.conf if you're using -OpenBSD-2.9 or later with a PS/2 or USB mouse. +X11R6.8.2 has support for the mouse driver included in the new wscons console +driver. Specify ``wsmouse'' as the protocol and ``/dev/wsmouse'' as the +device in /etc/X11/xorg.conf with a PS/2 or USB mouse. See README.mouse for general instruction on mouse configuration. -6. Running X +5. Running X -6.1 Starting xdm, the display manager +5.1 Starting xdm, the display manager To start the display manager, log in as root on the console and type: ``xdm -nodaemon''. -You can start xdm automatically on bootup by changing the line - - xdm_flags=NO # for normal use: xdm_flags="" - -to: +You can start xdm automatically on bootup by adding the line: xdm_flags="" # for normal use: xdm_flags="" -in /etc/rc.conf. +in /etc/rc.conf.local. -6.2 Running X without the display manager +5.2 Running X without the display manager The easiest way for new users to start X windows is to type: ``startx >& startx.log''. Error messages are lost unless you redirect them because the @@ -174,21 +90,15 @@ tomize your X by creating .xinitrc, .xserverrc, and .twmrc files in your home directory as described in the xinit and startx man pages. -7. Kernel Support for X - -To make sure X support is enabled under OpenBSD, the following line must be -in your config file in /sys/arch/i386/conf: +6. Kernel Support for X - option APERTURE +OpenBSD's GENERIC kernels have all support for running X enabled. -7.1 Console drivers +6.1 Console drivers The server supports wscons, the standard OpenBSD/i386 console driver. -The pcvt console driver which was the default up to OpenBSD 2.8, is also sup- -ported on those releases. - -7.2 Aperture Driver +6.2 Aperture Driver By default OpenBSD includes the BSD 4.4 kernel security feature that disables access to the /dev/mem device when in multi-user mode. But the X server @@ -214,12 +124,12 @@ terminals, only the first one will have linear memory access. Set securelevel to -1 if you need more that one X server at a time. -7.3 MIT-SHM +6.3 MIT-SHM OpenBSD supports System V shared memory. If X detects this support in your kernel, it will support the MIT-SHM extension. -8. Rebuilding the X Distribution +7. Rebuilding the X Distribution You should configure the distribution by editing xc/config/cf/host.def before compiling. To compile the sources, invoke ``make World'' in the xc @@ -230,9 +140,11 @@ OpenBSD XF4 source tree is available by anoncvs from all OpenBSD anoncvs servers. See http://www.openbsd.org/anoncvs.html for details on anoncvs. -X11R6.8 also compiles on other OpenBSD architectures. +X11R6.8.2 compiles on most OpenBSD architectures. The X.Org X server builds +and run on the following systems. On other architectures supported by +OpenBSD, only client side libraries and applications are supported. -8.1 X11R6.8 on OpenBSD/alpha +7.1 OpenBSD/alpha The X server is known to work on some VGA cards in alpha machines that sup- port BWX I/O, with OpenBSD 3.2 and higher. @@ -253,11 +165,10 @@ OpenBSD 3.1 and higher includes an OS-specific driver wsfb that is used to support TGA cards. -8.2 X11R6.8 on OpenBSD/macppc +7.2 OpenBSD/macppc -The X server is currently known to work on the G4 Macs and new iBooks with -ATI Rage 128 cards running OpenBSD 3.0 or later. Other machines are more or -less untested. Earlier OpenBSD versions lack some kernel support for it. +The X server is currently known to work on most of the G4 Macs and iBooks +with ATI or nVidia cards. Other machines are more or less untested. Use xorgconfig to build a /etc/X11/xorg.conf file before starting the server for the first time. @@ -267,32 +178,24 @@ Modeline "1152x768" 64.995 1152 1213 1349 1472 768 771 777 806 -HSync -VSync -8.3 OpenBSD/sparc +7.3 OpenBSD/sparc OpenBSD 3.2 on sparc switched to the wscons device driver and now uses the OS -specific wsfb driver in the X server. This driver is not included in X11R6.8. -Please use the version shipped with OpenBSD instead. - -8.4 OpenBSD/sparc64 - -This version only has support for X clients on OpenBSD/sparc64. Note that the -version shipped with OpenBSD also has support for the X server on both SBus -and PCI based machines. +specific wsfb driver in the X server. This driver is not included in +X11R6.8.2. Please use the version shipped with OpenBSD instead. -9. Building New X Clients +7.4 OpenBSD/sparc64 -The easiest way to build a new client (X application) is to use xmkmf if an -Imakefile is included in the sources. Type ``xmkmf -a'' to create the Make- -files, check the configuration if necessary and type ``make''. Whenever you -install additional man pages you should update whatis.db by running ``make- -whatis /usr/X11R6/man''. +This version only has support PCI based machines using ATI cards on +OpenBSD/sparc64. Note that the version shipped with OpenBSD has support for +the X server on both SBus and UPA (unaccelerated) based cards. -10. Thanks +8. Thanks -Many thanks to all people who contributed to make X11R6.8 work on *BSD, in -particular: David Dawes, Todd Fries, Rod Grimes, Charles Hannum, Amancio -Hasty, Christoph Robitschko, Matthias Scheler, Michael Smith, Ignatios Sou- -vatzis, Jack Velte, Nate Williams and Pace Willison. +Many thanks to all people who contributed to make X11R6.8.2 work on *BSD, in +particular: David Dawes, Todd Fries, Miodrag Vallat, Rod Grimes, Charles Han- +num, Amancio Hasty, Christoph Robitschko, Matthias Scheler, Michael Smith, +Ignatios Souvatzis, Jack Velte, Nate Williams and Pace Willison. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.OpenBSD,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.SCO x11r682/xc/programs/Xserver/hw/xfree86/doc/README.SCO --- xc/programs/Xserver/hw/xfree86/doc/README.SCO 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.SCO 2005-02-08 01:44:27.000000000 +0100 @@ -6,12 +6,12 @@ 1. Requirements -Before you can either compile or execute a binary distribution of X11R6.8, +Before you can either compile or execute a binary distribution of X11R6.8.2, the following conditions must be met: o Ensure that you are running Release 5.0.4 or later. This is required because OSS646 is only supported on those platforms. There are no plans - to support X11R6.8 on earlier releases of OpenServer. + to support X11R6.8.2 on earlier releases of OpenServer. o Ensure that OSS646, the ``Execution Environment Update'' package is installed, if appropriate. Check the release notes for that update to @@ -29,8 +29,8 @@ est version can always be found at the SCO FTP site . - o To compile X11R6.8, you must use the SCO-supported version of the GNU C - Compiler. It is possible that Skunkware versions of the compiler will + o To compile X11R6.8.2, you must use the SCO-supported version of the GNU + C Compiler. It is possible that Skunkware versions of the compiler will work too, but this has not been tested. The ``GNU Development System'' is available for all releases from (and including) SCO OpenServer Release 5.0.5. It is provided with the operating system in all versions @@ -42,7 +42,7 @@ o If you are not using OSR 5.0.7 or later, you need to get an updated con- sole driver. See urlnam for details on OpenServer supplements. If you can't or don't want to upgrade your con- - sole driver, X11R6.8 will still compile, but you may run into problems + sole driver, X11R6.8.2 will still compile, but you may run into problems with some cards such as the Riva TNT and ATI Rage cards. The problem with the console driver in 5.0.6A and earlier is that when the X server sets graphics mode, the driver does not set a status bit, so any text @@ -51,11 +51,11 @@ console video memory. This just happens to be slap bang in the middle of palette data for the Riva TNT, so you get color map corruption. The updated console driver also has an improved mechanism for allocating - video memory that X11R6.8 detects at compile time, and it will use it if - it exists. It is STRONGLY recommended that you get the console driver - update. + video memory that X11R6.8.2 detects at compile time, and it will use it + if it exists. It is STRONGLY recommended that you get the console + driver update. -2. Compiling X11R6.8 +2. Compiling X11R6.8.2 Using the GNU Development System, compiling the distribution should be fairly straightforward. Before attempting to compile the system though, you should @@ -85,7 +85,7 @@ o If you want to install the manual pages, execute the command make install.man 2>&1 | tee -a install.log as root. -3. Before Running X11R6.8 +3. Before Running X11R6.8.2 The SCO xterm terminfo description is not compatible with the xterm in the R5 distribution. @@ -99,7 +99,7 @@ 4. Switching Consoles -X11R6.8 uses similar console switching keys as the SCO R4 and R5 servers. +X11R6.8.2 uses similar console switching keys as the SCO R4 and R5 servers. That is, Ctrl-PrntScr takes you to the next console along from the one X is running on. If this is the last console it will take you to console 1. Ctrl- Alt-FXX, where XX is a function key between F1 and F12 will switch you to the @@ -135,12 +135,12 @@ 6. Using SCO binaries/servers. -X11R6.8 will accept connections from SCO binaries (R3 upwards) and the SCO R5 -server will also accept connections from X11R6.8 binaries. This means you may -mix and match the two if you have ODT. For example you may still use the -Panning Motif window manager (pmwm) if you prefer. +X11R6.8.2 will accept connections from SCO binaries (R3 upwards) and the SCO +R5 server will also accept connections from X11R6.8.2 binaries. This means +you may mix and match the two if you have ODT. For example you may still use +the Panning Motif window manager (pmwm) if you prefer. Generated from XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml,v 1.3 keithp Exp $ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.SCO,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.SCO,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.SiS x11r682/xc/programs/Xserver/hw/xfree86/doc/README.SiS --- xc/programs/Xserver/hw/xfree86/doc/README.SiS 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.SiS 2005-02-08 01:44:27.000000000 +0100 @@ -2,7 +2,7 @@ Thomas Winischhofer () - 5 October 2003 + 7 February 2005 1. Introduction @@ -16,21 +16,17 @@ o 300 series: 300/305, 540, 630/730 - o 315 series: 315, 550, 650, 651, M650, 740 + o 315 series: 315/E/PRO, 550/551/552, 650, 651, M650, 740 - o 330 series: 330 ("Xabre"), 661FX, M661FX, 741, 760 + o 330 series: 330 ("Xabre"), M]661[F/M]X, [M]741[GX], [M]760[GX] -The driver supports: +Among other features, the driver supports - o 8/16/24 bits color depth; old series also 15; + o 8/16/24 bits color depth; old series also 15 - o XAA + o Hardware cursor; 315/330 series: Color HW cursor - o XVideo (Xv) - - o Render (XRAND) - - o Hardware cursor; 315/330 series: Color HW cursor; + o XAA; XVideo (Xv); RENDER (XRAND) and other extensions o 6326: TV output @@ -40,12 +36,11 @@ o 300/315/330 series: LCD output via LVDS transmitters or SiS video bridges - o 300/315/330 series: Dual head mode; Xinerama; Merged framebuffer mode; + o 300/315/330 series: Dual head mode; Xinerama; Merged framebuffer mode -This document gives an overview over the driver's features and configuration -options. Please see http://www.winischhofer.net/linuxsisvga.shtml for -detailed documentation and updates. Support for the 661, 741 and 760 is -entirely untested as of this writing, and possibly incomplete for LCD output. +This document provides a brief overview over the driver's features and con- +figuration options. Please see http://www.winischhofer.at/linuxsisvga.shtml +for detailed documentation and updates. 2. xorg.conf Options @@ -53,182 +48,210 @@ them must be specified in the Device section of the xorg.conf file for this card. +In the list below, the options' arguments are described by type. For +"boolean", the keywords "on", "true" and "yes", as well as "off", "false" and +"no" respectively have the same meaning. + 2.1 For all chipsets - Option "SWCursor", "HWCursor" + Option "SWCursor" boolean] + + Option "HWCursor" boolean] These options select whether the software (SW) or hardware (HW) cursor should be used. The default is using the hardware cursor. - Option "NoAccel" - Disables 2D acceleration. Default: 2D acceleration is enabled. + Option "NoAccel" boolean] + Disables 2D acceleration. By default, 2D acceleration is enabled. - Option "Turboqueue" - SiS chipsets have the option to extend the engine command queue - on VRAM. This concept is called "TurboQueue" and gives some per- - formance improvement. Due to hardware bugs, the TurboQueue is - disabled on the 530/620, otherwise enabled by default. - - Option "Rotate" + Option "Rotate" string] This option enables clockwise ("CW") or counter-clockwise ("CCW") rotation of the display. Enabling either CW or CCW rotation dis- ables the RandR extension. Default: no rotation. - Option "ShadowFB" + Option "ShadowFB" boolean] This option enables the shadow framebuffer layer. By default, it is disabled. - Option "NoXVideo" - Disables the XVideo support. Default: XVideo support is enabled. + Option "NoXVideo" boolean] + Disables the XVideo (Xv) support. By default, XVideo support is + enabled. - Option "CRT1Gamma" + Option "CRT1Gamma" boolean] Enables or disables gamma correction. Default: gamma correction is enabled. 2.2 old series specific options - Option "FastVram" + Option "FastVram" boolean] Enables 1 cycle memory access for read and write operations. The default depends on the chipset used. - Option "NoHostBus" + Option "Turboqueue" boolean] + SiS chipsets have the ability to extend the engine command queue + in video RAM. This concept is called "TurboQueue" and gives some + performance improvement. Due to hardware bugs, the TurboQueue is + disabled on the 530/620, otherwise enabled by default. + + Option "NoHostBus" boolean] For 5597/5598 only. This option, if set, disables the CPU to VGA host bus. Disabling the host bus will result in a severe perfor- mance regression. - VideoRAM size + VideoRAM size] The SiS 6326 can only directly address 4096K bytes of video RAM. However, there are some cards out there featuring 8192K (8MB) of - video RAM. This RAM is not addressable by the engines. There- - fore, by default, the driver will only use 4096K. This behavior - can be overridden by specifying the amount of video RAM using the - VideoRAM keyword. If more than 4096K is specified, the driver - will disable 2D acceleration, Xv and the HW cursor. On all other - chipsets, this keyword is ignored. + video RAM. This RAM is not addressable by the engines. Therefore, + by default, the driver will only use 4096K. This behavior can be + overridden by specifying the amount of video RAM using the Video- + RAM keyword. If more than 4096K is specified, the driver will + disable 2D acceleration, Xv and the HW cursor. On all other + chipsets, this keyword is ignored. The size argument is expected + in KB, but without "KB". - Option "NoYV12" + Option "NoYV12" boolean] Due to hardware bugs, XVideo may display a corrupt image when using YV12 encoded material. This option, if set, disables sup- port for YV12 and hence forces the Xv-aware application to use either YUV2 or XShm for video output. - Option "TVStandard" + Option "TVStandard" string] (6326 only) Selects the TV output standard. May be PAL or NTSC. By default, this is selected by a jumper on the card. 2.3 300/315/330 series specific options - Option "ForceCRT1" + Option "EnableSiSCtrl" boolean] + This option enables/disables the driver's interface for the SiSC- + trl utility. Please see http://www.winischhofer.at/linux- + sisvga.shtml for more information. + + Option "Turboqueue" boolean] + (300 series only) SiS chipsets have the ability to extend the + engine command queue in video RAM. This concept is called "Turbo- + Queue" and gives some performance improvement. The TurboQueue is + enabled by default. + + Option "ForceCRT1" boolean] Enables or disables CRT1 (= the external VGA monitor). By default, the driver will use CRT1 if a monitor is detected during server start. Some older monitors can't be detected, so they may require setting this option to true. To disable CRT1 output, set this option to false. - Option "ForceCRT1Type" - SiS 650, M650 and 651 with either 301LV or 302LV video bridge - only. May be VGA or LCD. Specifying LCD will force the driver to - use the VGA controller's CRT1 channel for driving the LCD, while - CRT2 is free for TV usage. Default is VGA. - - Option "ForceCRT2Type" - Selects the CRT2 output device type. Valid parameters are LCD, - TV, SVIDEO, COMPOSITE, SCART, VGA, NONE. NONE disables CRT2. - SVIDEO and COMPOSITE are only for systems with a SiS video bridge - and select the desired plug type. For Chrontel systems, TV should - be used instead. VGA means secondary VGA and is only available - on some SiS video bridges (301, 301B, 301C). - - Option "CRT2Gamma" - Enables or disables gamma correction for CRT2. This is only sup- - ported for SiS video bridges. Default: gamma correction for CRT2 - is enabled. + Option "ForceCRT1Type" string] + (For SiS 650, M650, 651, 661, 741, 760 with either SiS 301LV, + 302LV or SiS 301C video bridge only) The argument may be "VGA" or + "LCD". Specifying LCD will force the driver to use the VGA con- + troller's CRT1 channel for driving the LCD while CRT2 is free + for TV usage. Default is VGA. + + Option "ForceCRT2Type" string] + Selects the CRT2 output device type. Valid parameters are "LCD", + "TV", "SVIDEO", "COMPOSITE", "SVIDEO+COMPOSITE", "SCART", "VGA", + "YPBPR480I", "YPBPR480P", "YPBPR720P", "YPBPR1080I" or "NONE". + NONE disables CRT2. SVIDEO, COMPOSITE, SVIDEO+COMPOSITE, SCART + and all the YPBPR alternatives are only for systems with a SiS + video bridge and select the desired plug or tv standard type. For + Chrontel systems, TV should be used instead. VGA means secondary + VGA and is only available on some SiS video bridges (301, 301B, + 301C). + + Option "CRT2Gamma" boolean] + (For SiS video bridges only) This option enables or disables + gamma correction for CRT2. Default: gamma correction for CRT2 is + enabled. - Option "DRI" + Option "DRI" boolean] Although this option is accepted for all chipsets, it currently only makes sense on the 300 series; DRI is only supported on these chipsets. This option enables/disables DRI. - Option "TVStandard" + Option "TVStandard" string] Selects the TV output standard. May be PAL or NTSC, on some machines (depending on the hardware) also PALM and PALN. Default: BIOS setting. - Option "TVXPosOffset", "TVYPosOffset" + Option "TVXPosOffset" integer] + + Option "TVYPosOffset" integer] These options allow relocating the image on your TV. Both options take an integer within the range of -16 to 16. Default: 0. Not supported for Chrontel 7019. - Option "CHTVOverscan" - For Chrontel TV encoders only. Selects whether TV output should + Option "CHTVOverscan" boolean] + (For Chrontel TV encoders only) Selects whether TV output should be overscan or underscan. - Option "CHTVSuperOverscan" - For Chrontel 7005 TV encoders in PAL mode only. Selects whether + Option "CHTVSuperOverscan" boolean] + (For Chrontel 7005 TV encoders in PAL mode only) Selects whether TV output should be super-overscan (slightly larger than the viewable area) or not. - Option "SISTVXScale", "SISTVYScale" - For SiS video bridges only. These options allow zooming the image - on your TV. SISTVXScale takes an integer within the range of -16 - to 16. SISTVYScale accepts -4 to 3. Default: 0. Not all modes - can be scaled. + Option "SISTVXScale" integer] -2.4 300 series specific options + Option "SISTVYScale" integer] + (For SiS video bridges only) These options allow zooming the + image on your TV. SISTVXScale takes an integer within the range + of -16 to 16. SISTVYScale accepts -4 to 3. Default: 0. Not all + modes can be scaled. - Option "MaxXFBMem" - DRI requires the linux kernel's SiS framebuffer driver "sisfb" - and some other modules which come with either the linux kernel or - X11R6.8. (On *BSD, the DRI driver does not require any frame- - buffer driver.) Sisfb takes care of memory management for tex- - ture data. In order to prevent the X driver and sisfb from over- - writing each others video memory, sisfb reserves an amount of - video memory for the X driver. This amount can either be selected - using sisfb's mem parameter, or auto-selected depending on the - amount of total video RAM available. However, the X driver needs - to know about the amount of RAM sisfb reserved. For this purpose, - the Option "MaxXFBMem" exists. - - XFree 4.3.0 disabled SiS DRI support due to a lack of maintenance - of the SiS DRI driver. X11R6.8 and X11R6.8 and XFree86 4.4 con- - tains a newly written SiS DRI driver by Eric Anholt. - - If you intend to use DRI, I recommend setting the total video - memory in the BIOS to 64MB in order to at least overcome the lack - of memory swap functions. - - Sisfb can be used for memory management only, or as a complete - framebuffer driver. If you start sisfb with a valid mode (ie you - gain a graphical console), the X driver can communicate with - sisfb and doesn't require setting the MaxXFBMem option at all. - The X driver will receive enough information from sisfb in this - case. - - However, if you use sisfb for memory management only, ie you - started sisfb with mode=none and still have a text mode console, - there is no communication between sisfb and the X driver. In this - case, you need to set MaxXFBMem to the same value as you gave - sisfb with its mem parameter. If you didn't specify any mem - parameter, sisfb will reserve 12288KB if more than 16MB of total - video RAM is available, 8192KB if between 12 and 16MB of video - RAM is available, 4096KB in all other cases. +2.4 300 series specific options - Then you need to specify any of these amounts as the parameter - for the MaxXFBMem option. The value is to be given without 'KB'. + Option "MaxXFBMem" size] + This option might only be needed if you are running X on a Linux + 2.4 series kernel. This option is not needed and should be omit- + ted on Linux 2.6 and *BSD. + + The Linux kernel features a framebuffer driver named "sisfb" + which takes care of memory management for DRI/DRM (such as for 3D + texture data). In order to keep the X driver and sisfb from over- + writing each other's video memory, sisfb reserves a certain + amount of video memory for the X driver. Reserved memory is for X + 2D, pixmap cache and video data only. Sisfb will not present this + memory to the DRI. The amount of reserved memory can either be + selected using sisfb's mem parameter or auto-selected depending + on the total amount of video RAM available. + + Fact of the matter is, the X driver needs to know about the + amount of RAM sisfb reserved. For this purpose, the Option + "MaxXFBMem" exists. + + If you start sisfb with a valid mode (ie you run a graphical con- + sole), the X driver can communicate with sisfb and doesn't + require setting the MaxXFBMem option at all. The X driver will + receive enough information from sisfb in this case. + + If you, on the other hand, use sisfb for memory management only, + ie you started sisfb with mode=none and still have a text mode + console, there is no communication between sisfb and the X + driver. In this - and ONLY this - case, you need to set MaxXFBMem + to the same value as you gave sisfb with its mem parameter. If + you didn't specify any mem parameter, sisfb will reserve (and you + will have to specify by MaxXFBMem) 12288KB if more than 16MB of + total video RAM is available, 8192KB if between 12 and 16MB of + video RAM is available, 4096KB in all other cases. The size is + expected in KB, without the "KB". + + Final word of advice: If you intend to use DRI on an integrated + chipset (such as the 630/730), it is recommended to set the total + video memory in the BIOS to 64MB in order to at least overcome + the DRI driver's lack of memory swap functions. 2.5 315/330 series specific options - Option "RenderAcceleration" - Enables or disables RENDER acceleration. By default, RENDER - acceleration is enabled. - - Option "XvOnCRT2" - 315, 650, 740, 330 only. This option selects whether the XVideo - (Xv) overlay should be displayed on CRT1 or CRT2. Setting this - options means CRT2. The other CRT will only display the (blue) - color key. + Option "RenderAcceleration" boolean] + Enables or disables RENDER acceleration. This feature, for + instance, accelerates output of anti-aliased text. By default, + RENDER acceleration is enabled. + + Option "XvOnCRT2" boolean] + (For 315, 650, 740, 330 only) This option selects whether the + XVideo (Xv) overlay should be displayed on CRT1 or CRT2. Setting + this option means CRT2. The other CRT will only display the (by + default: blue) color key or a black/red pattern. Document based on 4.1 version written by Joanjo Santamarta and 3.3 version written by Xavier Ducoin. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.SiS,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.SiS,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.Solaris x11r682/xc/programs/Xserver/hw/xfree86/doc/README.Solaris --- xc/programs/Xserver/hw/xfree86/doc/README.Solaris 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.Solaris 2005-02-08 01:44:27.000000000 +0100 @@ -81,15 +81,15 @@ There are only a total of 8 available VT's (7 normal VT's + 1 console) not the usual 15. If you have all 8 allocated, and you attempt to allocate a additional VT you will panic the system. (This bug is worked around in the -Solaris X11R6.8 Xserver.) +Solaris X11R6.8.2 Xserver.) From a programming stand point, they work pretty much as documented in the AT&T Unix System V/386 Release 4 Integrated Software Development Guide, how- ever a number of ioctl() calls are broken. -2. Notes for building X11R6.8 on Solaris +2. Notes for building X11R6.8.2 on Solaris - 1. Both GCC, and the Sun Studio compilers are supported by X11R6.8. The + 1. Both GCC, and the Sun Studio compilers are supported by X11R6.8.2. The minimum recommended GCC release is 2.7.2. Some earlier GCC's are known to not work and should be avoided. @@ -115,7 +115,7 @@ Whether this behaviour still exists with newer GCC's has not been veri- fied. - 4. To build X11R6.8 with GCC you need gcc and (optionally) c++filt from + 4. To build X11R6.8.2 with GCC you need gcc and (optionally) c++filt from GNU binutils. Don't install gas or ld from GNU binutils, use the one provided by Sun. @@ -123,9 +123,9 @@ bolic links named cc, CC, and c++filt pointing respectively to the actual gcc, g++ and c++filt commands. - 5. If you are using Sun compilers to compile the X11R6.8 distribution, you - need to modify your PATH appropriately so the Sun compiler tools are - available. Normally, they should be in /opt/SUNWspro/bin + 5. If you are using Sun compilers to compile the X11R6.8.2 distribution, + you need to modify your PATH appropriately so the Sun compiler tools + are available. Normally, they should be in /opt/SUNWspro/bin 6. You MUST put /usr/ccs/bin at the front of your PATH. There are known problems with some GNU replacements for the utilities found there. So @@ -195,12 +195,16 @@ (and reported!). It might even have broken some aspects of the x86 port. + 3. The kbd driver is not yet supported on Solaris, but the server still + logs a message that it can't find the Keyboard driver and suggests you + use kbd. That message should be ignored in this release. + 5. Bug Notification Bug reports should be reported using the bugzilla.freedesktop.org using the xorg product or sent to . - Generated from XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml,v 1.3 kem Exp $ + Generated from XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml,v 1.3.2.1 gisburn Exp $ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.Solaris,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.Solaris,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config x11r682/xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config --- xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config 2005-02-08 01:44:27.000000000 +0100 @@ -6,9 +6,9 @@ Abstract - This document describes how to configure X11R6.8 XKB from a user's - point a few. It converts basic configuration syntax and gives also - a few examples. + This document describes how to configure X11R6.8.2 XKB from a + user's point a few. It converts basic configuration syntax and + gives also a few examples. 1. Overview @@ -193,4 +193,4 @@ compatibility reasons. Avoid using it if it is possible. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.XKB-Config,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing x11r682/xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing --- xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing 2005-02-08 01:44:27.000000000 +0100 @@ -132,12 +132,12 @@ as of a vector of columns per each keycode (naturally the dimension of this vector may differ for different keycodes). What is it good for? The group is not very useful unless you intend to use more than one logically different -set of symbols (like more than one alphabet) defined in a single mapping -table. But then, the group has a natural meaning - each symbol set has its -own group and changing it means selecting a different one. XKB approach -allows up to four different groups. The columns inside each group are called -(shift) levels. The X server knows the current group and reports it together -with modifier set and with a keycode in key events. +set of symbols (like more than one alphabet) defined in a single mapping ta- +ble. But then, the group has a natural meaning - each symbol set has its own +group and changing it means selecting a different one. XKB approach allows +up to four different groups. The columns inside each group are called (shift) +levels. The X server knows the current group and reports it together with +modifier set and with a keycode in key events. To sum it up: @@ -506,4 +506,4 @@ And that should be it. Enjoy creating your own xkb mapping. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.XKB-Enhancing,v 1.3.2.1 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.ati x11r682/xc/programs/Xserver/hw/xfree86/doc/README.ati --- xc/programs/Xserver/hw/xfree86/doc/README.ati 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.ati 2005-02-08 01:44:27.000000000 +0100 @@ -69,8 +69,8 @@ The driver currently supports the SuperVGA capabilities of all ATI adapters except some early Mach8 and Mach32 adapters that do not provide the required functionality. This support works for monochrome, 16-colour and 256-colour -video modes, if one of the following ATI graphics controller chips is pre- -sent: +video modes, if one of the following ATI graphics controller chips is +present: VGAWonder series: 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6 Mach32 series: 68800-3, 68800-6, 68800AX, 68800LX @@ -705,4 +705,4 @@ $Id$ Based on XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/ati.sgml,v 3.42 2003/01/20 03:43:07 dawes Exp -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.ati,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.ati,v 1.3.2.1 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.chips x11r682/xc/programs/Xserver/hw/xfree86/doc/README.chips --- xc/programs/Xserver/hw/xfree86/doc/README.chips 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.chips 2005-02-08 01:44:27.000000000 +0100 @@ -7,9 +7,10 @@ 1. Introduction -The Chips and Technologies driver release in X11R6.8 came from XFree86 4.4 +The Chips and Technologies driver release in X11R6.8.2 came from XFree86 4.4 rc2; this document was originally included in that release and has been -updated modestly to reflect differences between X11R6.8 and XFree86 4.4 rc2. +updated modestly to reflect differences between X11R6.8.2 and XFree86 4.4 +rc2. With the release of XFree86 version 4.0, the Chips and Technologies driver has been extensively rewritten and contains many new features. This driver @@ -960,7 +961,7 @@ startx -- -depth 24 -fbbpp 32 8-8-8 RGB truecolor - however as X11R6.8 allows 32bpp pixmaps to be used with frame- + however as X11R6.8.2 allows 32bpp pixmaps to be used with frame- buffers operating in 24bpp, this mode of operating will cost per- formance for no gain in functionality. @@ -1032,4 +1033,4 @@ bugs and extensively testing this server. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.chips,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.chips,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.dps x11r682/xc/programs/Xserver/hw/xfree86/doc/README.dps --- xc/programs/Xserver/hw/xfree86/doc/README.dps 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.dps 2005-02-08 01:44:27.000000000 +0100 @@ -34,7 +34,7 @@ server which, when executed, causes a line to be drawn. This document does not aim at teaching programming with DPS; it is only a -summary description of the DPS support code included with X11R6.8. More +summary description of the DPS support code included with X11R6.8.2. More information about DPS, including a DPS bibliography, is available from the DPS extension site . @@ -49,14 +49,14 @@ ``DPS agent.'' In this latter case, the term ``server-side'' is somewhat misleading. -At the time of writing, only the client side is included with X11R6.8; the +At the time of writing, only the client side is included with X11R6.8.2; the server side must be obtained separately. Please see server side (section 3., page 1) later in this document for more information. 2. The DPS client side The DPS client side consists of four libraries and a number of basic tools -for programming and configuration; these are all included with X11R6.8. +for programming and configuration; these are all included with X11R6.8.2. 2.1 Libraries @@ -80,14 +80,14 @@ is a DPS drawing area that automatically manages issues such as scrolling, scaling, client-side backing store, incremental redisplay, etc. The Font Selection Box, and its associated Font Preview, present a convenient and pow- -erful interface for choosing scalable fonts. Finally, the Color Picker pre- -sents an interface for choosing colours using either of the RGB or HSV +erful interface for choosing scalable fonts. Finally, the Color Picker +presents an interface for choosing colours using either of the RGB or HSV spaces. The latter three widgets are documented in [DPTX]; some summary Scrolling Widget documentation is available in the doc subdirectory of the DPS.tar.gz file, available from urlnam . -The source code for libdpstkXm is included with X11R6.8; however, as it +The source code for libdpstkXm is included with X11R6.8.2; however, as it depends on Motif, this library is not built by default. A GTK-based library providing some of the functionality of libdpstkXm is available from the gtkDPS site . @@ -100,9 +100,9 @@ they use Xt or not. This state of affairs is unfortunately true of the version of libdps included -with X11R6.8. We are currently considering various solutions to this problem -(including the use of weak linker symbols or splitting off the guilty func- -tions into a separate library). +with X11R6.8.2. We are currently considering various solutions to this prob- +lem (including the use of weak linker symbols or splitting off the guilty +functions into a separate library). 2.2 Client-side tools @@ -122,7 +122,7 @@ 2.3 Sample clients -X11R6.8 contains three sample DPS clients, dpsinfo, dpsexec and texteroids. +X11R6.8.2 contains three sample DPS clients, dpsinfo, dpsexec and texteroids. They are documented in their respective manual pages. A number of sample clients that depend on Motif are available in urlnam @@ -188,4 +188,4 @@ Updated by Jim Gettys. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.dps,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.dps,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.fonts x11r682/xc/programs/Xserver/hw/xfree86/doc/README.fonts --- xc/programs/Xserver/hw/xfree86/doc/README.fonts 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.fonts 2005-02-08 01:44:27.000000000 +0100 @@ -1,4 +1,4 @@ - Fonts in X11R6.8 + Fonts in X11R6.8.2 Juliusz Chroboczek, @@ -6,9 +6,9 @@ 1. Introduction -This document describes the support for fonts in X11R6.8. Installing fonts +This document describes the support for fonts in X11R6.8.2. Installing fonts (section 2., page 1) is aimed at the casual user wishing to install fonts in -X11R6.8 the rest of the document describes the font support in more detail. +X11R6.8.2 the rest of the document describes the font support in more detail. We assume some familiarity with digital fonts. If anything is not clear to you, please consult Appendix: Background (section 5., page 1) at the end of @@ -18,8 +18,8 @@ X includes two font systems: the original core X11 fonts system, which is present in all implementations of X11, and the Xft fonts system, which may -not be distributed with implementations of X11 that are not based on X11R6.8 -but will hopefully be included by them in the future +not be distributed with implementations of X11 that are not based on +X11R6.8.2 but will hopefully be included by them in the future The core X11 fonts system is directly derived from the fonts system included with X11R1 in 1987, which could only use monochrome bitmap fonts. Over the @@ -48,16 +48,17 @@ Xft has no configuration mechanism itself, rather it relies upon the fontcon- fig library to configure and customize fonts. That library is not specific -to X11R6.8 or indeed on any particular font output mechanism. This discus- +to X11R6.8.2 or indeed on any particular font output mechanism. This discus- sion describes how fontconfig, rather than Xft, works. 2.1.1 Installing fonts in Xft Fontconfig looks for fonts in a set of well-known directories that include -all of X11R6.8's standard font directories (`/usr/X11R6/lib/X11/lib/fonts/*') -by default) as well as a directory called `.fonts/' in the user's home direc- -tory. Installing a font for use by Xft applications is as simple as copying -a font file into one of these directories. +all of X11R6.8.2's standard font directories +(`/usr/X11R6/lib/X11/lib/fonts/*') by default) as well as a directory called +`.fonts/' in the user's home directory. Installing a font for use by Xft +applications is as simple as copying a font file into one of these directo- +ries. $ cp lucbr.ttf ~/.fonts/ @@ -114,7 +115,7 @@ -Xft supports sub-pixel rasterisation on LCD displays. X11R6.8 should auto- +Xft supports sub-pixel rasterisation on LCD displays. X11R6.8.2 should auto- matically enable this feature on laptops and when using an LCD monitor con- nected with a DVI cable; you can check whether this was done by typing @@ -185,9 +186,9 @@ 2.2.1 Installing bitmap fonts -The X11R6.8 server can use bitmap fonts in both the cross-platform BDF format -and the somewhat more efficient binary PCF format. (X11R6.8 also supports -the obsolete SNF format.) +The X11R6.8.2 server can use bitmap fonts in both the cross-platform BDF for- +mat and the somewhat more efficient binary PCF format. (X11R6.8.2 also sup- +ports the obsolete SNF format.) Bitmap fonts are normally distributed in the BDF format. Before installing such fonts, it is desirable (but not absolutely necessary) to convert the @@ -215,7 +216,7 @@ 2.2.2 Installing scalable fonts -The X11R6.8 server supports scalable fonts in four formats: Type 1, Speedo, +The X11R6.8.2 server supports scalable fonts in four formats: Type 1, Speedo, TrueType and CIDFont. This section only applies to the former three; for information on CIDFonts, please see Installing CIDFonts (section 2.2.3, page 1) later in this document. @@ -251,7 +252,7 @@ Munhwa-Regular--UniKS-UCS2-H -The CIDFont code in X11R6.8 requires a very rigid directory structure. The +The CIDFont code in X11R6.8.2 requires a very rigid directory structure. The main directory must be called `CID' (its location defaults to `/usr/X11R6/lib/X11/fonts/CID' but it may be located anywhere), and it should contain a subdirectory for every CID collection. Every subdirectory must @@ -310,7 +311,7 @@ bitmap fonts; this way, the server will prefer bitmap fonts to scalable fonts when an exact match is possible, but will avoid scaling bitmap fonts when a scalable font can be used. (The `:unscaled' hack, while still supported, -should no longer be necessary in X11R6.8.) +should no longer be necessary in X11R6.8.2.) You may check the font path of the running server by typing the command @@ -353,11 +354,11 @@ you are trying to use a font in a format that is not supported by your server. -X11R6.8 supports the BDF, PCF, SNF, Type 1, Speedo, TrueType, OpenType and -CIDFont font formats. However, not all X11R6.8 servers come with all the +X11R6.8.2 supports the BDF, PCF, SNF, Type 1, Speedo, TrueType, OpenType and +CIDFont font formats. However, not all X11R6.8.2 servers come with all the font backends configured in. -On most platforms, the X11R6.8 servers are modular: the font backends are +On most platforms, the X11R6.8.2 servers are modular: the font backends are included in modules that are loaded at runtime. The modules to be loaded are specified in the `xorg.conf' file using the `Load' directive: @@ -365,7 +366,7 @@ If you have trouble installing fonts in a specific format, you may want to check the server's log file in order to see whether the relevant modules are -properly loaded. The list of font modules distributed with X11R6.8 is as +properly loaded. The list of font modules distributed with X11R6.8.2 is as follows: o "bitmap": bitmap fonts (`*.bdf', `*.pcf' and `*.snf'); @@ -382,7 +383,7 @@ Please note that the argument of the `Load' directive is case-sensitive. -3. Fonts included with X11R6.8 +3. Fonts included with X11R6.8.2 3.1 Standard bitmap fonts @@ -391,7 +392,7 @@ Helvetica and some members of the Lucida family. In the SI, these fonts are provided in the ISO 8859-1 encoding (ISO Latin Western-European). -In X11R6.8, a number of these fonts are provided in Unicode-encoded font +In X11R6.8.2, a number of these fonts are provided in Unicode-encoded font files instead. At build time, these fonts are split into font files encoded according to legacy encodings, a process which allows us to provide the stan- dard fonts in a number of regional encodings with no duplication of work. @@ -469,7 +470,7 @@ 3.3 Standard scalable fonts -X11R6.8 includes all the scalable fonts distributed with X11R6. +X11R6.8.2 includes all the scalable fonts distributed with X11R6. 3.3.1 Standard Type 1 fonts @@ -491,7 +492,7 @@ /usr/X11R6/lib/X11/fonts/Type1/UT*.pfa -Finally, X11R6.8 also comes with Type 1 versions of Bitstream Courier and +Finally, X11R6.8.2 also comes with Type 1 versions of Bitstream Courier and Charter. These fonts have XLFD -bitstream-courier-*-*-normal--0-0-0-0-m-0-iso8859-1 @@ -503,9 +504,10 @@ 3.3.2 Standard Speedo fonts -X11R6.8 includes Speedo versions of the Bitstream Courier and Charter fonts. -In order to use these fonts, you should ensure that your X server is loading -the `Speedo' font backend; see Troubleshooting (section 2.2.5, page 1). +X11R6.8.2 includes Speedo versions of the Bitstream Courier and Charter +fonts. In order to use these fonts, you should ensure that your X server is +loading the `Speedo' font backend; see Troubleshooting (section 2.2.5, page +1). These fonts cover all of ISO 8859-1 and almost all of ISO 8859-2. They have XLFD name @@ -519,7 +521,7 @@ 3.4 The Bigelow & Holmes Luxi family -X11R6.8 includes the Luxi family of scalable fonts, in both TrueType and +X11R6.8.2 includes the Luxi family of scalable fonts, in both TrueType and Type 1 format. This family consists of the fonts Luxi Serif, with XLFD -b&h-luxi serif-medium-*-normal--*-*-*-*-p-*-*-* @@ -565,11 +567,11 @@ An earlier version of the Luxi fonts was made available under the name Lucidux. This name should no longer be used due to trademark uncertainties, -and all traces of the Lucidux name have been removed from X11R6.8. +and all traces of the Lucidux name have been removed from X11R6.8.2. 4. More about core fonts -This section describes X11R6.8-specific enhancements to the core X11 fonts +This section describes X11R6.8.2-specific enhancements to the core X11 fonts system. 4.1 Core fonts and internationalisation @@ -592,8 +594,8 @@ backends to share their encoding data, and allows simple configuration of new locales independently of font type. -Please note: the X-TrueType (X-TT) backend is not included in X11R6.8. That -functionality has been merged into the FreeType backend.> +Please note: the X-TrueType (X-TT) backend is not included in X11R6.8.2. +That functionality has been merged into the FreeType backend.> In the fontenc layer, an encoding is defined by a name (such as iso8859-1), possibly a number of aliases (alternate names), and an ordered collection of @@ -652,7 +654,7 @@ used to automatically build `encodings.dir' files. Please see the mkfont- dir(1) manual page for more details. -A number of encoding files for common encodings are included with X11R6.8. +A number of encoding files for common encodings are included with X11R6.8.2. Information on writing new encoding files can be found in Format of encodings directory files (section 4.1.3, page 1) and Format of encoding files (section 4.1.4, page 1) later in this document. @@ -972,8 +974,8 @@ bw=0.5:ds=y:ai=0.2:mincho.ttc -misc-mincho-bold-i-normal--0-0-0-0-c-0-jisx0201.1976-0 setup the complete combination of jisx0208 and jisx0201 using mincho.ttc -only. More information on the TTCap syntax is found on the After X-TT Pro- -ject page . +only. More information on the TTCap syntax is found on the After X-TT +Project page . The FreeType backend uses the fontenc layer in order to support recoding of fonts; this was described in The fontenc layer (section 4.1.1, page 1) and @@ -988,7 +990,7 @@ Since the functionalities for CJKV support introduced by X-TT have been merged into the new FreeType backend, the X-TT backend will be removed from -X11R6.8's tree near the future. Therefore, the use of FreeType backend is +X11R6.8.2's tree near the future. Therefore, the use of FreeType backend is preferred over the X-TT backend. General information on X-TrueType may be found at the After X-TT Project page @@ -1135,16 +1137,16 @@ 6. References -X11R6.8 comes with extensive documentation in the form of manual pages and +X11R6.8.2 comes with extensive documentation in the form of manual pages and typeset documents. Before installing fonts, you really should read the font- config(3) and mkfontdir(1) manual pages; other manual pages of interest include X(7), Xserver(1), xset(1), Xft(3), xlsfonts(1) and showfont(1). In addition, you may want to read the X Logical Font Description document, by Jim Flowers, which is provided in the file `xc/doc/xlfd.PS.Z'. -The latest released version of the X11R6.8 documentation (including this doc- -ument and all manual pages) can be found from current X11R6.8 documentation -. +The latest released version of the X11R6.8.2 documentation (including this +document and all manual pages) can be found from current X11R6.8.2 documenta- +tion . The comp.fonts FAQ , which is unfortunately no longer being maintained, contains a wealth of information @@ -1179,4 +1181,4 @@ for example RFC 373. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.fonts,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.i740 x11r682/xc/programs/Xserver/hw/xfree86/doc/README.i740 --- xc/programs/Xserver/hw/xfree86/doc/README.i740 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.i740 2005-02-08 01:44:27.000000000 +0100 @@ -167,7 +167,7 @@ o Daryll Strauss -The X11R6.8 version of this driver originally came from XFree86 4.4 rc2. +The X11R6.8.2 version of this driver originally came from XFree86 4.4 rc2. The XFree86 version of this driver was donated to The XFree86 Project by: @@ -178,4 +178,4 @@ http://www.precisioninsight.com -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.i740,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.i740,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.i810 x11r682/xc/programs/Xserver/hw/xfree86/doc/README.i810 --- xc/programs/Xserver/hw/xfree86/doc/README.i810 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.i810 2005-02-08 01:44:27.000000000 +0100 @@ -105,7 +105,7 @@ o Keith Whitwell -The X11R6.8 version of this driver originally came from XFree86 4.4 rc2. +The X11R6.8.2 version of this driver originally came from XFree86 4.4 rc2. The XFree86 version of this driver was donated to The XFree86 Project by: @@ -118,4 +118,4 @@ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/i810.sgml,v 1.4 dawes Exp $ -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.i810,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.i810,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.mouse x11r682/xc/programs/Xserver/hw/xfree86/doc/README.mouse --- xc/programs/Xserver/hw/xfree86/doc/README.mouse 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.mouse 2005-02-08 01:44:27.000000000 +0100 @@ -1,4 +1,4 @@ - Mouse Support in X11R6.8 + Mouse Support in X11R6.8.2 Kazutaka Yokota @@ -6,7 +6,7 @@ 1. Introduction -This document describes mouse support in X.org Foundation's X11R6.8 server. +This document describes mouse support in X.org Foundation's X11R6.8.2 server. Mouse configuration has often been mysterious task for novice users. How- ever, once you learn several basics, it is straightforward to write the mouse @@ -66,7 +66,7 @@ find an appropriate adapter with which you can connect the PS/2 mouse to a serial port or visa versa. -X11R6.8 supports the mouse with a wheel, a roller or a knob. Its action is +X11R6.8.2 supports the mouse with a wheel, a roller or a knob. Its action is detected as the Z (third) axis motion of the mouse. As the X server or clients normally do not use the Z axis movement of the pointing device, a configuration option, "ZAxisMapping", is provided to assign the Z axis move- @@ -101,7 +101,7 @@ SP: support is available in a different form *1 Refer to the following sections for details. - *2 X11R6.8/OS2 will support any type of mouse that the OS supports, + *2 X11R6.8.2/OS2 will support any type of mouse that the OS supports, whether it is serial, bus mouse, or PnP type. 3.2 BSD/OS @@ -203,10 +203,10 @@ 3.12 OS/2 -X11R6.8/OS2 always uses the native mouse driver of the operating system and +X11R6.8.2/OS2 always uses the native mouse driver of the operating system and will support any type of pointer that the OS supports, whether it is serial, bus mouse, or PnP type. If the mouse works under Presentation Manager, it -will also work under X11R6.8/OS2. +will also work under X11R6.8.2/OS2. Always specify "OSMouse" as the protocol type. @@ -435,8 +435,8 @@ server. NOTE #1: horizontal movement may not always be detected by the current ver- -sion of the X11R6.8 X servers, because there appears to be no accepted stan- -dard as to how the horizontal direction is encoded in mouse data. +sion of the X11R6.8.2 X servers, because there appears to be no accepted +standard as to how the horizontal direction is encoded in mouse data. NOTE #2: Some mice think left is the negative horizontal direction, others may think otherwise. Moreover, there are some mice whose two wheels are both @@ -989,4 +989,4 @@ EndSection -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.mouse,v 1.4 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.mouse,v 1.4.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.r128 x11r682/xc/programs/Xserver/hw/xfree86/doc/README.r128 --- xc/programs/Xserver/hw/xfree86/doc/README.r128 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.r128 2005-02-08 01:44:27.000000000 +0100 @@ -78,7 +78,7 @@ 8. Authors -The X11R6.8 driver was originally part of XFree86 4.4 rc2. +The X11R6.8.2 driver was originally part of XFree86 4.4 rc2. The XFree86 4 driver was ported from XFree86 3.3.x and enhanced by: @@ -119,4 +119,4 @@ http://www.suse.com -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.r128,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.r128,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.rendition x11r682/xc/programs/Xserver/hw/xfree86/doc/README.rendition --- xc/programs/Xserver/hw/xfree86/doc/README.rendition 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.rendition 2005-02-08 01:44:27.000000000 +0100 @@ -107,7 +107,7 @@ "ShadowFB" and automatically enable it. It also disables the acceleration. The option is not activated by default. -6. News in the X11R6.8 release +6. News in the X11R6.8.2 release This driver was originally part of the XFree86 4.4 rc2 release. @@ -148,4 +148,4 @@ eral bugs left to clear out before if is stable for general use. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.rendition,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.rendition,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/README.s3virge x11r682/xc/programs/Xserver/hw/xfree86/doc/README.s3virge --- xc/programs/Xserver/hw/xfree86/doc/README.s3virge 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/README.s3virge 2005-02-08 01:44:27.000000000 +0100 @@ -6,7 +6,7 @@ 1. Supported hardware -The s3virge driver in X11R6.8 supports the S3 ViRGE, ViRGE DX, GX, GX2, MX, +The s3virge driver in X11R6.8.2 supports the S3 ViRGE, ViRGE DX, GX, GX2, MX, MX+, and VX chipsets. It also supports Trio3D and Trio3D/2x chips. A major- ity of testing is done on ViRGE DX chips, making them the most stable to date. This release has added support for doublescan modes on DX. @@ -45,7 +45,7 @@ 5. Support: -For support with X11R6.8 video drivers please refer to our web site at +For support with X11R6.8.2 video drivers please refer to our web site at wiki.x.org . 6. Authors @@ -61,4 +61,4 @@ o Kevin Brosius -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.s3virge,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/README.s3virge,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/RELNOTES x11r682/xc/programs/Xserver/hw/xfree86/doc/RELNOTES --- xc/programs/Xserver/hw/xfree86/doc/RELNOTES 2004-09-04 02:22:32.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/RELNOTES 2005-02-09 00:54:04.000000000 +0100 @@ -1,19 +1,19 @@ - Release Notes for X11R6.8 + Release Notes for X11R6.8.2 The X.Org Foundation The XFree86 Project, Inc. - 8 September 2004 + 9 February 2005 Abstract These release notes contains information about features and their - status in the X.Org Foundation X11R6.8 release. It is based on the - XFree86 4.4RC2 RELNOTES document published by The XFree86[tm] Pro- - ject, Inc. There are significant updates and differences in the + status in the X.Org Foundation X11R6.8.2 release. It is based on + the XFree86 4.4RC2 RELNOTES document published by The XFree86[tm] + Project, Inc. There are significant updates and differences in the X.Org release as noted below. -1. Introduction to the X11R6.8 Release +1. Introduction to the X11R6.8.2 Release The release numbering is based on the original MIT X numbering system. X11 refers to the version of the network protocol that the X Window system is @@ -37,7 +37,7 @@ top.org using the xorg product, and discussions on this server take place on . -X11R6.8 comes with a graphical configuration tool called "xorgcfg", which +X11R6.8.2 comes with a graphical configuration tool called "xorgcfg", which also has a text mode interface and can be used to create an initial configu- ration file. It can also be used to customise existing configurations. @@ -63,32 +63,33 @@ quick read through the Installation Document. It may save you some time and also help you figure out which of the binary releases you need. -The next section describes what is new in the latest version (6.8) compared -with the previous full release (6.7). The other sections below describe some -of the new features and changes between 3.3.x and 4.0. There are lots of new -features, and we definitely don't have enough space to cover them all here. +The next section describes what is new in the latest version (6.8.2) compared +with the previous full release (6.8.1). The other sections below describe +some of the new features and changes between 3.3.x and 4.0. There are lots +of new features, and we definitely don't have enough space to cover them all +here. -2. Summary of new features in X11R6.8 +2. Summary of new features in X11R6.8.2 -This is a sampling of the new features in X11R6.8. A more complete list of +This is a sampling of the new features in X11R6.8.2. A more complete list of changes can be found in the ChangeLog file that is part of the X source tree. o Freetype was updated to version 2.1.8. But installing freetype from X distributions would often or usually result in the replacement or use of "stale" versions of freetype. On Linux, FreeBSD, Solaris 10, and SCO5, - therefore, X11R6.8 will by default use the version of freetype2 that is - installed on the system. If your system doesn't come with an installed - freetype2 and you wish to use the version supplied with this distribu- - tion, please add: + therefore, X11R6.8.2 will by default use the version of freetype2 that + is installed on the system. If your system doesn't come with an + installed freetype2 and you wish to use the version supplied with this + distribution, please add: #define HasFreetype2 NO to config/cf/host.def. - o The XTT font module and FreeType1 have been retired because FreeType2 + o The XTT font module and FreeType1 have been retired because FreeType2 subsumes their functionality - o Retire old PS Type1 font rasterizer (except for CID font usage) since + o Retire old PS Type1 font rasterizer (except for CID font usage) since the FreeType2 rasterizer now handles PS Type1 (*.pfa, *.pfb) o Render implementation fixes @@ -97,6 +98,8 @@ o Updated SiS driver + o Updated Nvidia driver (opensource version) + o Render acceleration for ATI's R100 and R200-series cards o Substantial speedups in the software implementation of the render exten- @@ -113,11 +116,12 @@ o Software mouse cursor is now based on the Damage extension o A new keyboard driver is enabled by default. The old driver is disabled - unless explicitly compiled in by defining the macro USE_DEPRECATED_KEY- - BOARD_DRIVER + unless explicitly compiled in by defining the macro |USE_DEPRECATED_KEY- + BOARD_DRIVER|. - o Extensions can be enabled/disabled from the configuration file and from - the command line + o All extensions (except Xserver-specific extensions "DMX" and "XpExten- + sion") can now be enabled/disabled from the configuration file and from + the command line. o Mac OS X updates: @@ -134,9 +138,11 @@ o Fixed some GLX rendering problems on Mac OS X 10.2 and earlier + o Updated xterm version + 2.1 New X extensions -X11R6.8 includes four new extensions: +X11R6.8.2 includes four new extensions: XFixes The XFixes extension is a collection of improvements for defi- @@ -163,8 +169,8 @@ core protocol and the RENDER extension, the compositing manager can create special effects, such as translucennt windows. - The Composite extension is considered experimental in X11R6.8 and - is turned off by default. + The Composite extension is considered experimental in X11R6.8.2 + and is turned off by default. XEvIE (X Event Interception Extension) (experimental) XEvIE is an extension to intercept core keyboard and pointing @@ -173,8 +179,8 @@ (i.e., interested clients). This feature is required by the GNOME accessibility project. - The XEvIE extension is considered experimental in X11R6.8 and is - turned off by default. + The XEvIE extension is considered experimental in X11R6.8.2 and + is turned off by default. As noted above, some extensions are disabled by default. They can be enabled either in the xorg.conf configuration file or on the Xorg command-line. For @@ -189,7 +195,7 @@ 2.2 Distributed Multihead X (DMX) -X11R6.8 includes a new X server, called Xdmx, that allows users to create a +X11R6.8.2 includes a new X server, called Xdmx, that allows users to create a single unified desktop from multiple running X servers. It works by creating a local screen on each of these running X servers, which can be distributed across a network, and then presents that set of screens to the user. When @@ -201,8 +207,9 @@ 2.3 Xprint updates - o Integrated various fixes from xprint.mozdev.org (more or less the whole - codebase has been merged) + o Integrated various fixes from xprint.mozdev.org + (more or less the whole codebase has been + merged) o Integrated various fixes from Sun Microsystems @@ -211,18 +218,20 @@ o New set of maintenance tools for the Xprint server (xplsprinters, xpre- hashprinterlist, etc.) - o Added new XprintUtils client library to make the usage off Xprint easier + o Added new XprintUtils client library to make the usage of Xprint easier o Various other features and fixes integrated o Athena toolkit now has print support (XawPrintShell) which is included - in a separate version of that library (Xaw8) + in a new version of that library (Xaw8) - o Various applications/tools like xman, xedit, xlogo, etc. now have print - support + o Various applications/tools like xman, xedit, xlogo, xlsfonts, etc. now + have print support 2.4 Updated Mesa and DRI from upstream sources + o Mesa version has been updated to 6.2.1 (in X11R6.8.2) + o More OpenGL extensions o MergedFB for Radeon (Dualhead DRI support on these cards) @@ -242,23 +251,7 @@ 2.5 Video driver enhancements - o SiS driver updates include - - o output device hotplugging - - o lots of fixes for 661, 741, 760 - - o extended interface for SiSCtrl? - - o extended LCD handling (allow more modes) - - o HDTV support (480p, 480i, 720p. 1080i; 315/330 series) - - o Added video blitter Xv adapter (315/330 series) - - o extended RENDER acceleration - - o Radeon driver updates: + o ATI Radeon driver updates: o Merged Framebuffer support (dualhead with DRI) @@ -277,13 +270,9 @@ o Many other small fixes - o Neomagic driver updates - - o Support for Xv on pre-nm2160 chips - - o Pseudocolor overlay mode + o Chips driver update - o Improved support for lowres double scan modes + o Improved BE support o MGA driver updates @@ -291,6 +280,14 @@ o Updated 3D driver + o Neomagic driver updates + + o Support for Xv on pre-nm2160 chips + + o Pseudocolor overlay mode (=PseudoColor emulation) + + o Improved support for lowres double scan modes + o i810 driver updates o Dualhead support (i830+) @@ -299,17 +296,33 @@ o New 3D driver (i830+) + o i810 driver is now supported for AMD64 + + o S3 driver updates + + o Support for additional IBM RAMDACS + o Savage driver updates o Pseudocolor overlay mode - o S3 driver updates + o SiS driver updates include - o Support for additional IBM RAMDACS + o output device hotplugging - o Chips driver update + o lots of fixes for 661, 741, 760 - o Improved BE support + o extended interface for SiSCtrl? + + o extended LCD handling (allow more modes) + + o HDTV support (480p, 480i, 720p. 1080i; 315/330 series) + + o Added video blitter Xv adapter (315/330 series) + + o extended RENDER acceleration + + o SiS driver now supported on AMD64 o New Voodoo driver (Alan Cox) @@ -320,7 +333,7 @@ 3.1 Video Drivers -X11R6.8 includes the following video drivers: +X11R6.8.2 includes the following video drivers: +--------------+--------------------------+---------------------------------------------+ |Driver Name | Description | Further Information | @@ -376,48 +389,63 @@ Darwin/Mac OS X uses IOKit drivers and does not use the module loader drivers listed above. Further information can be found in README.Darwin. -X11R6.8 includes the following input drivers: +X11R6.8.2 includes the following print drivers: + +3.2 Print Drivers + ++------------+----------------------------------------+---------------------+ +|Driver Name | Description | Further Information | ++------------+----------------------------------------+---------------------+ +|PostScript | PostScript driver | | +|PCL | PCL color driver | | +|PCL-MONO | PCL monocrome driver | | +|RASTER | Monocrome raster driver (XWD, PS, PCL) | | ++------------+----------------------------------------+---------------------+ + +Drivers marked with (*) are available for Linux only. + +X11R6.8.2 includes the following input drivers: -3.2 Input Drivers +3.3 Input Drivers - +------------+----------------------------------+---------------------+ - |Driver Name | Description | Further Information | - +------------+----------------------------------+---------------------+ - |aiptek(*) | Aiptek USB tablet | aiptek(4) | - |calcomp | Calcomp | | - |citron | Citron | citron(4) | - |digitaledge | DigitalEdge | | - |dmc | DMC | dmc(4) | - |dynapro | Dynapro | | - |elographics | EloGraphics | | - |fpit | Fujitsu Stylistic Tablet PCs | fpit(4) | - |hyperpen | Aiptek HyperPen 6000 | | - |js_x | JamStudio pentablet | js_x(4) | - |kbd | generic keyboards (alternate) | kbd(4) | - |keyboard | generic keyboards | keyboard(4) | - |microtouch | MicroTouch | | - |mouse | most mouse devices | mouse(4) | - |mutouch | MicroTouch | | - |palmax | Palmax PD1000/PD1100 | palmax(4) | - |penmount | PenMount | | - |spaceorb | SpaceOrb | | - |summa | SummaGraphics | | - |tek4957 | Tektronix 4957 tablet | tek4957(4) | - |ur98(*) | Union Reality UR-F98 headtracker | ur98(4) | - |void | dummy device | void(4) | - |wacom | Wacom tablets | wacom(4) | - +------------+----------------------------------+---------------------+ + +------------+-------------------------------------+---------------------+ + |Driver Name | Description | Further Information | + +------------+-------------------------------------+---------------------+ + |aiptek(*) | Aiptek USB tablet | aiptek(4) | + |calcomp | Calcomp | | + |citron | Citron | citron(4) | + |digitaledge | DigitalEdge | | + |dmc | DMC | dmc(4) | + |dynapro | Dynapro | | + |elographics | EloGraphics | | + |fpit | Fujitsu Stylistic Tablet PCs | fpit(4) | + |hyperpen | Aiptek HyperPen 6000 | | + |js_x | JamStudio pentablet | js_x(4) | + |kbd | generic keyboards (loadable module) | kbd(4) | + |keyboard | generic keyboards (builtin driver) | keyboard(4) | + |microtouch | MicroTouch | | + |mouse | most mouse devices | mouse(4) | + |mutouch | MicroTouch | | + |palmax | Palmax PD1000/PD1100 | palmax(4) | + |penmount | PenMount | | + |spaceorb | SpaceOrb | | + |summa | SummaGraphics | | + |tek4957 | Tektronix 4957 tablet | tek4957(4) | + |ur98(*) | Union Reality UR-F98 headtracker | ur98(4) | + |void | dummy device | void(4) | + |wacom | Wacom tablets | wacom(4) | + +------------+-------------------------------------+---------------------+ Drivers marked with (*) are available for Linux only. -4. Overview of X11R6.8 +4. Overview of X11R6.8.2 -On most platforms, X11R6.8 has a single X server binary called Xorg. This +On most platforms, X11R6.8.2 has a single X server binary called Xorg. This binary can either have one or more video and input drivers linked in stati- cally, or more usually, dynamically, and in that manner load the video drivers, input drivers, and other modules that are needed. -X11R6.8 has X server support for most UNIX® and UNIX-like operating systems +X11R6.8.2 has X server support for most UNIX® and UNIX-like operating systems on Intel/x86 platforms, plus support for Linux and some BSD OSs on Alpha, PowerPC, IA-64, AMD64, Sparc, and Mips platforms, and for Darwin on PowerPC. @@ -433,7 +461,7 @@ A main benefit of this, is that when modules are updated, they do not need to be recompiled for every different operating system. The loader in version -6.8 has support for Intel (x86), Alpha and PowerPC platforms. It also has +6.8.2 has support for Intel (x86), Alpha and PowerPC platforms. It also has preliminary support for Sparc platforms. The X server makes use of modules for video drivers, X server extensions, @@ -476,14 +504,14 @@ 4.4 XAA The XFree86 Acceleration Architecture (XAA) was completely rewritten from -scratch for XFree86 4.x and is used in X11R6.8. Most drivers implement +scratch for XFree86 4.x and is used in X11R6.8.2. Most drivers implement acceleration by making use of the XAA module. The Xorg server will accept modules built either for XFree86 4.4 servers or its own. 4.5 Multi-head -Some multi-head configurations are supported in X11R6.8, primarily with mul- -tiple PCI/AGP cards. +Some multi-head configurations are supported in X11R6.8.2, primarily with +multiple PCI/AGP cards. One of the main problems is with drivers not sufficiently initialising cards that were not initialised at boot time. This has been improved somewhat with @@ -505,8 +533,8 @@ Xinerama is not enabled by default, and can be enabled with the +xinerama command line option for the X server. -Xinerama was included with X11R6.4. The version included in X11R6.8 was com- -pletely rewritten for improved performance and correctness. +Xinerama was included with X11R6.4. The version included in X11R6.8.2 was +completely rewritten for improved performance and correctness. Known problems: @@ -517,7 +545,7 @@ 4.7 DGA version 2 -DGA 2.0 is included in 6.8. Documentation for the client libraries can be +DGA 2.0 is included in 6.8.2. Documentation for the client libraries can be found in the XDGA(3) man page. A good degree of backwards compatibility with version 1.0 is provided. @@ -554,11 +582,11 @@ 4.10 XVideo Extension (Xv) -The XVideo extension is supported in X11R6.7.x. An XvQueryPortAttributes -function has been added as well as support for XvImages. XvImages are XIm- -ages in alternate color spaces such as YUV and can be passed to the server -through shared memory segments. This allows clients to display YUV data with -high quality hardware scaling and filtering. +The XVideo extension is supported in X11R6.7.x and newer releases. An +XvQueryPortAttributes function has been added as well as support for XvIm- +ages. XvImages are XImages in alternate color spaces such as YUV and can be +passed to the server through shared memory segments. This allows clients to +display YUV data with high quality hardware scaling and filtering. 4.11 X Rendering Extension (Render) @@ -589,20 +617,21 @@ To allow a graceful transition for applications moving from core text render- ing to the Render extension, Xft can use either the core rendering requests or the Render extension for text. See the section on FreeType support in Xft -for instructions on configuring X11R6.8 to use an existing FreeType installa- -tion. +for instructions on configuring X11R6.8.2 to use an existing FreeType instal- +lation. The Xft library uses configuration files, /etc/fonts/fonts.conf and /etc/fonts/local.conf, which contains information about which directories contain font files and also provides a sophisticated font aliasing mechanism. -Documentation for that file is included in the Xft(3) man page. +Documentation for that file is included in the Xft(3), fontconfig(3) and +fonts.conf(4) man pages. 4.11.2 Application Support For Anti-Aliased Text -Only four applications have been modified in X11R6.8 to work with the Render -extension and the Xft and FreeType libraries to provide anti-aliased text: -xterm, xditview, x11perf and xclock. Migration of other applications may -occur in future releases. +Only four applications have been modified in X11R6.8.2 to work with the Ren- +der extension and the Xft and FreeType libraries to provide anti-aliased +text: xterm, xditview, x11perf and xclock. Migration of other applications +may occur in future releases. By default, xterm uses core fonts through the standard core API. It has a command line option and associated resource to direct it to use Xft instead: @@ -645,7 +674,7 @@ o Please refer to xedit(1) for more details. - o XPrint support. + o Support for printing via Xprint. 4.14 Font support @@ -655,23 +684,23 @@ 4.15 TrueType support X11R6.7 came with two TrueType backends. The functionality from the `X-True- -Type' backend has been integrated into the `FreeType' backend which is -designed to transparently support all of the functionality from the `X-True- -Type' backend with the exception of the font encoding libraries; the -`FreeType' backend uses only the fontenc-based encoding system . +Type' (="XTT") backend has been integrated into the `FreeType' backend which +is designed to transparently support all of the functionality from the `X- +TrueType' backend with the exception of the font encoding libraries; the +`FreeType' backend uses only the fontenc-based encoding system. 4.16 CID font support -Support for CID-keyed fonts is included in X11R6.8 The CID-keyed font format -was designed by Adobe Systems for fonts with large -character sets. The CID-keyed font support in X11R6.8 was donated by SGI -. See the LICENSE document for a copy of the CID +Support for CID-keyed fonts is included in X11R6.8.2 The CID-keyed font for- +mat was designed by Adobe Systems for fonts with +large character sets. The CID-keyed font support in X11R6.8.2 was donated by +SGI . See the LICENSE document for a copy of the CID Font Code Public License. 4.17 Internationalisation of the scalable font backends -X11R6.8 has a ``fontenc'' layer to allow the scalable font backends to use a -common method of font re-encoding. This re-encoding makes it possible to +X11R6.8.2 has a ``fontenc'' layer to allow the scalable font backends to use +a common method of font re-encoding. This re-encoding makes it possible to uses fonts in encodings other than their their native encoding. This layer is used by the Type1, Speedo and FreeType backends. @@ -684,7 +713,7 @@ 4.19 Unicode/ISO 10646 support -What is included in X11R6.8 +What is included in X11R6.8.2 o All ``-misc-fixed-*'' BDF fonts are now available in the ISO10646-1 encoding and cover at least the 614 characters found in ISO @@ -717,8 +746,8 @@ 4.20 Xlib Compose file support and extensions -A more flexible Compose file processing system was added to Xlib in X11R6.8. -The compose file is searched for in the following order: +A more flexible Compose file processing system was added to Xlib in +X11R6.8.2. The compose file is searched for in the following order: 1. If the environment variable $XCOMPOSEFILE is set, its value is used as the name of the Compose file. @@ -765,14 +794,14 @@ 4.21 Bitstream Vera fonts -X11R6.8 includes the Bitstream Vera family of typefaces in TrueType format. +X11R6.8.2 includes the Bitstream Vera family of typefaces in TrueType format. This family includes the ``Bitstream Vera Sans'', ``Bitstream Vera Sans Mono'' and ``Bitstream Vera Serif'' in Roman and Bold varients as well as the ``Bitstream Vera Sans'' and ``Bitstream Vera Sans Mono'' in Oblique and Bold Oblique. These fonts include all of the glyphs needed for ISO 8859 parts 1 9 and 15. -The license terms for the Vera fonts are inclued in the file COPYRIGHT.Vera>. +The license terms for the Vera fonts are inclued in the file COPYRIGHT.Vera. 4.22 Luxi fonts from Bigelow and Holmes @@ -801,7 +830,7 @@ 5. Miscellaneous -This section describes other items of note for the X11R6.8 release. +This section describes other items of note for the X11R6.8.2 release. 5.1 Legacy keyboard driver phase-out @@ -862,22 +891,28 @@ 6. Attributions/Acknowledgements/Credits -This section lists the credits for the X11R6.8 release. For a more detailed -breakdown, refer to the ChangeLog file in the X.Org source tree, the +This section lists the credits for the X11R6.8.2 release. For a more +detailed breakdown, refer to the ChangeLog file in the X.Org source tree, the ChangeLog's in or the 'cvs log' information for individual source files." - These people contributed in some way to X11R6.8 - Paul Anderson, Eric Anholt, Daniel Berrange, Russ Blaine, Ryan - Breen, Alan Coopersmith, Michel Daenzer, David Dawes, Alex - Deucher, Stefan Dirsch, Egbert Eich, Rik Faith, Jim Gettys, - Alexander Gottwald, Mike A. Harris, John Harper, John Heasley, - Matthieu Herrb, Alan Hourihane, Kristian Høsberg, Harold L. Hunt - II, Adam Jackson, Deron Johnson, Ivan Kokshaysky, Stuart Kreit- - man, Peter Kunzman, Nolan Leake, Ryan Lortie, Andreas Luik, Tor- - rey T. Lyons, Roland Mainz, Guy Martin, Kevin E. Martin, Keith - Packard, Greg Parker, Aaron Plattner, Søren Sandmann, Ty Sarna, - Yu Shao, Bryan Stine, Owen Taylor, Travis Tilley, Ryan Underwood, - Ronny Vindenes, Chisato Yamauchi + These people contributed in some way to X11R6.8.2 + Paul Anderson, Eric Anholt, Dave Airlie, Donnie Berkholz, Daniel + Berrange, Thomas Biege, Russ Blaine, Ryan Breen, Alan Cooper- + smith, Jay Cotton, Michel Daenzer, David Dawes, Kevin DeKorte, + Alex Deucher, Stefan Dirsch, Egbert Eich, Rik Faith, Jim Gettys, + Giuseppe Ghibò, Thomas Gilg, Alexander Gottwald, Mike A. Harris, + John Harper, John Heasley, Jeremy Huddleston, Matthieu Herrb, + Alan Hourihane, Jay Hobson, Matthias Hopf, Kristian Høsberg, + Harold L. Hunt II, Adam Jackson, Daniel Jacobowitz, Deron John- + son, Masaki Katakai, Stephen Kennedy, Ivan Kokshaysky, Stuart + Kreitman, Peter Kunzman, Julien Lafon, Nolan Leake, Ryan Lortie, + Andreas Luik, Torrey T. Lyons, Roland Mainz, Guy Martin, Kevin E. + Martin, Dan McNichol, Dagfinn Ilmari Mannsaker, Simon Montagu, + Keith Packard, Greg Parker, Drew Parsons, Aaron Plattner, Branden + Robinson, Søren Sandmann, Ty Sarna, Yu Shao, Gustavo Noronha + Silva, Bryan Stine, Owen Taylor, Travis Tilley, Ryan Underwood, + Ronny Vindenes, Chisato Yamauchi, Mark Vojkovich, Tim Yamin, Hui + Yu The X Window System has been a collaborative effort from its inception. Our apologies for anyone or organization inadvertently overlooked. Many individ- @@ -886,105 +921,103 @@ This product includes software developed by: Paul Anderson, Michael Bax, Jehan Bing, Peter Breitenlohner, Alan - Coopersmith, Egbert Eich, John Dennis, Fabrizio Gennari, Jim Get- - tys, Alexander Gottwald, Ralf Habacker Mike Harris, Mattheiu - Herrb Alan Hourihane, Harold L Hunt II, Elliot Lee, Jeremy Katz, - Kaleb Keithley, Stuart Kreitman, Andreas Luik, Torrey Lyons, - Roland Mainz, Kevin E. Martin, Takuma Murakami, Kensuke Mat- - suzaki, Keith Packard, Ivan Pascal, Earle F. Philhower III, Ben- - jamin Rienfenstahl, Leon Shiman, Toshimitsu Tanaka, Nicholas - Wourms. - - 2d3d Inc., Aaron Plattner, Adam de Boor, Adam Jackson, Adobe Sys- - tems Inc., After X-TT Project, AGE Logic Inc., Alan Coopersmith, - Alan Cox, Alan Hourihane, Alexander Gottwald, Alex Deucher, - Andreas Luik, Andreas Monitzer, Andrew C Aitchison, Andy Ritger, - Ani Joshi, Anton Zioviev, Apollo Computer Inc., Apple Computer - Inc., Ares Software Corp., AT&T Inc., ATI Technologies Inc., Ben- - jamin Rienfenstahl, Bigelow and Holmes, Bill Reynolds, Bitstream - Inc., Bitstream, Inc, Brian Fundakowski Feldman, Brian Goines, - Brian Paul, Bruno Haible, Bryan Stine, Charles Murcko, Chen - Xiangyang, Chisato Yamauchi, Chris Constello, Christian Zietz, - Cognition Corp., Compaq Computer Corporation, Concurrent Computer - Corporation, Conectiva S.A., Corin Anderson, Craig Struble, Dae- - woo Electronics Co. Ltd., Dale Schumacher, Damien Miller, Daniel - Berrange, Daniel Stone, Daniver Limited, Daryll Strauss, Data - General Corporation, David Bateman, David Dawes, David E. Wexel- - blat, David Holland, David J. McKay, David McCullough, David Mos- - berger-Tang, David S. Miller, Davor Matic, Deron Johnson, Digital - Equipment Corporation, Dirk Hohndel, Doug Anson, Earle F. Phil- - hower III, Edouard TISSERANT, Eduardo Horvath, Egbert Eich, - Elliot Lee, Eric Anholt, Eric Fortune, Eric Sunshine, Erik For- - tune, Erik Nygren, Evans & Sutherland Computer Corporation, Fabio - Massimo Di Nitto Fabrizio Gennari, Finn Thoegersen, Frederic Lep- - ied, Free Software Foundation Inc., Fujitsu Limited, Fujitsu Open - Systems Solutions Inc., Fuji Xerox Co. Ltd., Geert Uytterhoeven, - Gerrit Jan Akkerman, Gerry Toll, Glenn G. Lai, GNOME Foundation, - Go Watanabe, Gregory Mokhin, Greg Parker, GROUPE BULL, Guy Mar- - tin, Hans Oey, Harald Koenig, Harm Hanemaayer, Harold L Hunt II, - Harry Langenbacher, Henry A. Worth, Hewlett-Packard Company, - Hitachi Ltd, Holger Veit, Howard Greenwell, Hummingbird Communi- - cations Ltd., IBM Corporation, Intel Corporation, INTERACTIVE - Systems Corporation, International Business Machines Corp., Itai - Nahshon, Ivan Kokshaysky, Ivan Pascal, Jakub Jelinek, James Tsil- - las, Jason Bacon, Jean-loup Gailly, Jeff Kirk, Jeffrey Hsu, Jehan - Bing, Jeremy Katz, Jim Gettys, Jim Tsillas, J. Kean Johnston, - John Dennis, John Harper, John Heasley, Jon Block, Jon Tombs, - Jorge Delgado, Joseph Friedman, Joseph V. Moss, Juliusz - Chroboczek, Jyunji Takagi, Kaleb Keithley, Kaleb S. Keithley, - Kazushi (Jam) Marukawa, Kazuyuki (ikko-) Okamoto, Kean Johnston. - Keith Packard, Keith Packard, Keith Whitwell, Kensuke Matsuzaki, - Kristian Høgsberg, Larry Wall, Lawrence Berkeley Laboratory, - Lennart Augustsson, Leon Shiman, Lexmark International Inc., - Linus Torvalds, Luc Verhaegen, Machine Vision Holdings Inc., Man- - fred Brands, Marc Aurele La France Mark Adler, Mark J. Kilgard, - Mark Leisher, Mark Smulders, Mark Vojkovich, Massachusetts Insti- - tute Of Technology, Matrox Graphics, Mattheiu Herrb Matthew - Grossman, Matthieu Herrb, Metro Link Inc., Michael Bax, Michael - H. Schimek, Michael P. Marking, Michael Schimek, Michael Smith, - Michel Daenzer, Mike A. Harris, Mike Harris, Ming Yu, MIPS Com- - puter Systems Inc., National Semiconductor, NCR Corporation Inc., - Netscape Communications Corporation, Network Computing Devices - Inc., Nicholas Wourms, Noah Levitt, Nolan Leake, Novell Inc., - Nozomi YTOW, NTT Software Corporation, Number Nine Computer - Corp., Number Nine Visual Technologies, NVIDIA Corp., Oivier - Danet, Oki Technosystems Laboratory Inc., OMRON Corporation, Open - Software Foundation, Orest Zborowski, Owen Taylor, Pablo Saratx- - aga, Panacea Inc., Panagiotis Tsirigotis, Paolo Severini, Pascal - Haible, Patrick Lecoanet, Patrick Lerda, Paul Anderson, Paul - Elliott, Peter Breitenlohner, Peter Kunzmann, Peter Trattler, - Philip Homburg, Precision Insight Inc., Prentice Hall, Quarter- - deck Office Systems, Ralf Habacker Randy Hendry, Ranier Keller, - Red Hat Inc., Regents of the University of California, Regis - Cridlig, Rene Cougnenc, Richard A. Hecker, Richard Burdick, Rich - Murphey, Rickard E. Faith, Rik Faith, Robert Baron, Robert - Chesler, Robert Millan. Robert V. Baron, Robin Cutshaw, Roland - Mainz, Ronny Vindenes, Russ Blaine, Ryan Breen, Ryan Lortie, Ryan - Underwood, S3 Graphics Inc., Sam Leffler, SciTech Software, Scott - Laird, Sebastien Marineau, Shigehiro Nomura, ShoGraphics Inc., - Shunsuke Akiyama, Silicon Graphics Computer Systems Inc., Silicon - Integrated Systems Corp Inc., Silicon Motion Inc., Simon P. - Cooper, Snitily Graphics Consulting Services, Sony Corporation, - Søren Sandmann, SRI, Stanislav Brabec, Stefan Dirsch, Stephan - Dirsch, Stephan Lang, Steven Lang, Stuart Kreitman, Sun Microsys- - tems Inc., SunSoft Inc., SuSE Inc, Sven Luther, Takis Psarogian- - nakopoulos, Takuma Murakami, Takuya SHIOZAKI, Tektronix Inc., The - DOS-EMU-Development-Team, The Institute of Software Academia - Sinica, The NetBSD Foundation, Theo de Raadt, Theodore Ts'o, The - Open Group, The Open Software Foundation, The Regents of the Uni- - versity of California, The Santa Cruz Operation Inc., The Weather - Channel Inc., The X Consortium, The XFree86 Project Inc., Thomas - E. Dickey, Thomas G. Lane, Thomas Hellström, Thomas Mueller, - Thomas Roell, Thomas Thanner, Thomas Winischhofer, Thomas Wol- - fram, Thorsten.Ohl, Tiago Gons, Todd C. Miller, Tomohiro KUBOTA, - Torrey Lyons, Torrey T. Lyons, TOSHIBA Corp., Toshimitsu Tanaka, - Travis Tilley, Tungsten Graphics Inc., Ty Sarna, UCHIYAMA - Yasushi, Unicode Inc., UniSoft Group Limited, University of Utah, - UNIX System Laboratories Inc., URW++ GmbH, VA Linux Systems, VIA - Technologies Inc., Video Electronics Standard, VMware Inc., Vrije - Universiteit, Wittawat Yamwong, Wyse Technology Inc., X Consor- - tium, Xi Graphics Inc., X-Oz Technologies, X-TrueType Server Pro- - ject and their contributors, Yu Shao, + Coopersmith, Thomas Dickey, Egbert Eich, John Dennis, Fabrizio + Gennari, Jim Gettys, Alexander Gottwald, Ralf Habacker, Mike Har- + ris, Mattheiu Herrb, Alan Hourihane, Harold L Hunt II, Elliot + Lee, Jeremy Katz, Kaleb Keithley, Stuart Kreitman, Andreas Luik, + Torrey Lyons, Roland Mainz, Kevin E. Martin, Takuma Murakami, + Kensuke Matsuzaki, Keith Packard, Ivan Pascal, Earle F. Philhower + III, Benjamin Rienfenstahl, Leon Shiman, Toshimitsu Tanaka, + Nicholas Wourms, 2d3d Inc., Aaron Plattner, Adam de Boor, Adam + Jackson, Adobe Systems Inc., After X-TT Project, AGE Logic Inc., + Alan Coopersmith, Alan Cox, Alan Hourihane, Alexander Gottwald, + Alex Deucher, Andreas Luik, Andreas Monitzer, Andrew C Aitchison, + Andy Ritger, Ani Joshi, Anton Zioviev, Apollo Computer Inc., + Apple Computer Inc., Ares Software Corp., AT&T Inc., ATI Tech- + nologies Inc., Benjamin Rienfenstahl, Bigelow and Holmes, Bill + Reynolds, Bitstream Inc., Bitstream, Inc, Brian Fundakowski Feld- + man, Brian Goines, Brian Paul, Bruno Haible, Bryan Stine, Charles + Murcko, Chen Xiangyang, Chisato Yamauchi, Chris Constello, Chris- + tian Zietz, Cognition Corp., Compaq Computer Corporation, Concur- + rent Computer Corporation, Conectiva S.A., Corin Anderson, Craig + Struble, Daewoo Electronics Co. Ltd., Dale Schumacher, Damien + Miller, Daniel Berrange, Daniel Stone, Daniver Limited, Daryll + Strauss, Data General Corporation, David Bateman, David Dawes, + David E. Wexelblat, David Holland, David J. McKay, David McCul- + lough, David Mosberger-Tang, David S. Miller, Davor Matic, Deron + Johnson, Digital Equipment Corporation, Dirk Hohndel, Doug Anson, + Earle F. Philhower III, Edouard TISSERANT, Eduardo Horvath, + Egbert Eich, Elliot Lee, Eric Anholt, Eric Fortune, Eric Sun- + shine, Erik Fortune, Erik Nygren, Evans & Sutherland Computer + Corporation, Fabio Massimo Di Nitto Fabrizio Gennari, Finn + Thoegersen, Frederic Lepied, Free Software Foundation Inc., + Fujitsu Limited, Fujitsu Open Systems Solutions Inc., Fuji Xerox + Co. Ltd., Geert Uytterhoeven, Gerrit Jan Akkerman, Gerry Toll, + Glenn G. Lai, GNOME Foundation, Go Watanabe, Gregory Mokhin, Greg + Parker, GROUPE BULL, Guy Martin, Hans Oey, Harald Koenig, Harm + Hanemaayer, Harold L Hunt II, Harry Langenbacher, Henry A. Worth, + Hewlett-Packard Company, Hitachi Ltd, Holger Veit, Howard Green- + well, Hummingbird Communications Ltd., IBM Corporation, Intel + Corporation, INTERACTIVE Systems Corporation, International Busi- + ness Machines Corp., Itai Nahshon, Ivan Kokshaysky, Ivan Pascal, + Jakub Jelinek, James Tsillas, Jason Bacon, Jean-loup Gailly, Jeff + Kirk, Jeffrey Hsu, Jehan Bing, Jeremy Katz, Jim Gettys, Jim Tsil- + las, J. Kean Johnston, John Dennis, John Harper, John Heasley, + Jon Block, Jon Tombs, Jorge Delgado, Joseph Friedman, Joseph V. + Moss, Juliusz Chroboczek, Jyunji Takagi, Kaleb Keithley, Kaleb S. + Keithley, Kazushi (Jam) Marukawa, Kazuyuki (ikko-) Okamoto, Kean + Johnston. Keith Packard, Keith Packard, Keith Whitwell, Kensuke + Matsuzaki, Kristian Høgsberg, Larry Wall, Lawrence Berkeley Labo- + ratory, Lennart Augustsson, Leon Shiman, Lexmark International + Inc., Linus Torvalds, Luc Verhaegen, Machine Vision Holdings + Inc., Manfred Brands, Marc Aurele La France Mark Adler, Mark J. + Kilgard, Mark Leisher, Mark Smulders, Mark Vojkovich, Mas- + sachusetts Institute Of Technology, Matrox Graphics, Mattheiu + Herrb Matthew Grossman, Matthieu Herrb, Metro Link Inc., Michael + Bax, Michael H. Schimek, Michael P. Marking, Michael Schimek, + Michael Smith, Michel Daenzer, Mike A. Harris, Mike Harris, Ming + Yu, MIPS Computer Systems Inc., National Semiconductor, NCR Cor- + poration Inc., Netscape Communications Corporation, Network Com- + puting Devices Inc., Nicholas Wourms, Noah Levitt, Nolan Leake, + Novell Inc., Nozomi YTOW, NTT Software Corporation, Number Nine + Computer Corp., Number Nine Visual Technologies, NVIDIA Corp., + Oivier Danet, Oki Technosystems Laboratory Inc., OMRON Corpora- + tion, Open Software Foundation, Orest Zborowski, Owen Taylor, + Pablo Saratxaga, Panacea Inc., Panagiotis Tsirigotis, Paolo Sev- + erini, Pascal Haible, Patrick Lecoanet, Patrick Lerda, Paul + Anderson, Paul Elliott, Peter Breitenlohner, Peter Kunzmann, + Peter Trattler, Philip Homburg, Precision Insight Inc., Prentice + Hall, Quarterdeck Office Systems, Ralf Habacker Randy Hendry, + Ranier Keller, Red Hat Inc., Regents of the University of Cali- + fornia, Regis Cridlig, Rene Cougnenc, Richard A. Hecker, Richard + Burdick, Rich Murphey, Rickard E. Faith, Rik Faith, Robert Baron, + Robert Chesler, Robert Millan. Robert V. Baron, Robin Cutshaw, + Roland Mainz, Ronny Vindenes, Russ Blaine, Ryan Breen, Ryan Lor- + tie, Ryan Underwood, S3 Graphics Inc., Sam Leffler, SciTech Soft- + ware, Scott Laird, Sebastien Marineau, Shigehiro Nomura, Sho- + Graphics Inc., Shunsuke Akiyama, Silicon Graphics Computer Sys- + tems Inc., Silicon Integrated Systems Corp Inc., Silicon Motion + Inc., Simon P. Cooper, Snitily Graphics Consulting Services, Sony + Corporation, Søren Sandmann, SRI, Stanislav Brabec, Stefan + Dirsch, Stephan Dirsch, Stephan Lang, Steven Lang, Stuart Kreit- + man, Sun Microsystems Inc., SunSoft Inc., SuSE Inc, Sven Luther, + Takis Psarogiannakopoulos, Takuma Murakami, Takuya SHIOZAKI, Tek- + tronix Inc., The DOS-EMU-Development-Team, The Institute of Soft- + ware Academia Sinica, The NetBSD Foundation, Theo de Raadt, + Theodore Ts'o, The Open Group, The Open Software Foundation, The + Regents of the University of California, The Santa Cruz Operation + Inc., The Weather Channel Inc., The X Consortium, The XFree86 + Project Inc., Thomas E. Dickey, Thomas G. Lane, Thomas Hellström, + Thomas Mueller, Thomas Roell, Thomas Thanner, Thomas Winis- + chhofer, Thomas Wolfram, Thorsten.Ohl, Tiago Gons, Todd C. + Miller, Tomohiro KUBOTA, Torrey Lyons, Torrey T. Lyons, TOSHIBA + Corp., Toshimitsu Tanaka, Travis Tilley, Tungsten Graphics Inc., + Ty Sarna, UCHIYAMA Yasushi, Unicode Inc., UniSoft Group Limited, + University of Utah, UNIX System Laboratories Inc., URW++ GmbH, VA + Linux Systems, VIA Technologies Inc., Video Electronics Standard, + VMware Inc., Vrije Universiteit, Wittawat Yamwong, Wyse Technol- + ogy Inc., X Consortium, Xi Graphics Inc., X-Oz Technologies, X- + TrueType Server Project and their contributors, Yu Shao, This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. @@ -1005,4 +1038,4 @@ and its contributors. -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/RELNOTES,v 1.5 2004/09/04 00:22:32 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/RELNOTES,v 1.5.2.3 2005/02/08 23:54:04 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/Versions x11r682/xc/programs/Xserver/hw/xfree86/doc/Versions --- xc/programs/Xserver/hw/xfree86/doc/Versions 2004-09-04 01:41:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/Versions 2005-02-08 01:44:27.000000000 +0100 @@ -1,9 +1,9 @@ X.Org and XFree86 Version Numbering Schemes The XFree86 Project, Inc - Updated for X11R6.8 by Keith Packard and Kevin E. Martin + Updated for X11R6.8.2 by Keith Packard and Kevin E. Martin - 8 September 2004 + 9 February 2005 Abstract @@ -19,7 +19,7 @@ branches. First is the trunk of the CVS repository. This is the main devel- opment stream, where all new work and work for future releases is done. -Second is the stable bugfix branch for the latest full release (6.8.0). It +Second is the stable bugfix branch for the latest full release (6.8.2). It is created around the time of the release. The branch for the current release is called "XORG-6_8-branch". Fixes for bugs found in the release will be added to this branch (as well as the trunk), and updates to this @@ -41,7 +41,7 @@ release. The next full release will be version 7.0. There is no scheduled update -release, but if one is needed, the version will be 6.8.1. +release, but if one is needed, the version will be 6.8.3. Aside from actual releases, snapshots of the active release branches are tagged in the CVS repository from time to time. Each such snapshot has an @@ -153,4 +153,4 @@ } -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/Versions,v 1.3 2004/09/03 23:41:21 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/Versions,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml 2004-09-08 03:54:29.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml 2004-12-15 08:08:45.000000000 +0100 @@ -280,6 +280,12 @@ to succeed. If you want to install on a filesystem other than /usr, make a symbolic link to /usr/X11R6 before installing. +To install the tree into a different directory than /usr/X11R6 +you can specify DESTDIR: + +make install DESTDIR=<install_target_dir> +make install.man DESTDIR=<install_target_dir> +

      Cross compiling is supported if the appropriate config files for your diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml 2004-04-23 21:23:59.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml 2005-02-08 00:15:26.000000000 +0100 @@ -6,8 +6,7 @@ README for X11R&relvers; on OpenBSD <author> Matthieu Herrb -<Date>Last modified on: 9 December 2003; updated 25 March 2004 by Jim Gettys -for X11R&relvers; +<Date>Last modified on: 4 February 2005. <ident> </ident> @@ -18,28 +17,29 @@ <sect>What and Where is X11R&relvers;? <p> -The X.org Foundation X11R&relvers; is an Open Source version of the X Window System that supports +The X.org Foundation X11R&relvers; is an Open Source version of +the X Window System that supports several UNIX(R) and UNIX-like operating systems (such as Linux, the BSDs and Solaris x86) on Intel and other platforms. See the <htmlurl url="COPYRIGHT.html" name="Copyright Notice">. <![ %notsnapshot [ -The sources for X11R&relvers; are available from - +The sources for X11R&relvers; are available from <htmlurl name="http://wiki.x.org" url="http://wiki.x.org">]]> <p> -X11R&relvers; also builds on other OpenBSD architectures. See section +X11R&relvers; builds on most architectures supported by OpenBSD. See section <ref id="otherarch" name="Building on other architectures"> for details. <sect>Bug Reports for This Document <p> -Use the X.org Bugzilla at <url url="http://bugzilla.freedesktop.org"> +Use the X.org Bugzilla at <htmlurl +url="http://bugs.freedesktop.org" name="http://bugs.freedesktop.org"> to submit comments or suggestions about this file, using the xorg product. <sect>New OS dependent features @@ -47,96 +47,17 @@ See the <htmlurl url="RELNOTES.html" name="Release Notes"> for non-OS dependent new features in X11R&relvers;. -<sect1>New OS related features -<p> -<itemize> -<item>The IPv6 support is enabled on OpenBSD, but XDMCP over IPv6 is -not currently enabled since the code uses IPv6 mapped IPv4 addresses -which are not supported on OpenBSD. -<item>The userland part of DRI is enabled and built. Now waiting for -someone to port the kernel modules... -<item>All major revisions of the shared libraries are incremented on -OpenBSD 3.3 and later, to support the API changes introduced by -gcc stack protector. -</itemize> - -<sect1>New OS related features in 4.3 -<p> -<itemize> -<item>Support for some VGA cards on OpenBSD/alpha -</itemize> - -<sect1>New OS dependent features in 4.2 -<p> -<itemize> -<item>Support for OpenBSD/macppc on the ATI Rage128 based -Power Macintoshes. -<item>Support for building clients on OpenBSD/sparc64. -</itemize> - -<sect1>New OS dependent features in 4.0.3 -<p> -<itemize> -<item>Support for the wscons console driver in post 2.8 OpenBSD. -<item>A fix for multi-threaded libraries support. -</itemize> - -<sect1>New OS dependent features in 4.0.2 -<p> -<itemize> -<item>Support for the OpenBSD ports tree, -<item>Preliminary support for the macppc architecture (clients build -and work, the server doesn't work yet), -<item>xdm now writes an utmp entry, -<item>startx now creates an Xauthority magic cookie for the display. -</itemize> - -<sect1>New OS dependent features in 4.0.1 -<p> -<itemize> -<item>Several features from the OpenBSD X11 tree were merged into xdm: -<itemize> -<item> support for Kerberos IV authentication -<item>use the arc4random(4) random number generator -<item>add a new resource "allowRootLogin", which can be used to disable - root logins through xdm -<item>log failed logins to syslogd -<item>verify that the shell is valid using /etc/shell -<item>verify that the account hasn't expired -</itemize> -<item>The Xsun server can be built again on OpenBSD/sparc. -</itemize> - -<sect1>New OS dependent features in 4.0 <p> <itemize> -<item>Multi-thread safe libraries are built by default on OpenBSD 2.6 - and later, -<item>Preliminary APM support. +<item>Switch the the Xinput-aware kbd driver for keyboard input </itemize> -<sect1>New OS dependent features in 3.9.18 -<p> +<sect1>New OS related features in X.Org 6.8 <itemize> -<item>Support for USB mices has been added on OpenBSD. -<item>Soft-booting secondary cards through the int10 BIOS interface is -now possible using the x86emu real mode emulator. +<item>Support for Propolice in modules. +<item>Server support for OpenBSD/amd64. </itemize> -<sect1>New OS dependent features in 3.9.17 -<p> -<itemize> -<item><em>Silken mouse</em> is supported for serial mices, and, under -post 2.6 OpenBSD-current for PS/2 mices. -<item>MTRR Write Combining is enabled under post 2.6 OpenBSD-current. -</itemize> - -<sect>Installing the Binaries - -<p> -Refer to the <htmlurl url="Install.html" name="Installation Document"> -for detailed installation instructions. - <sect>Configuring X for Your Hardware <p> The <tt>/etc/X11/xorg.conf</tt> file tells the X server what kind of @@ -147,7 +68,7 @@ You'll need info on your hardware: <itemize> <item>Your mouse type, baud rate and its /dev entry. -<item>The video card's chipset (e.g. ET4000, S3, etc). +<item>The video card's chipset (e.g. ATI Radeon, nVidia GeForce 4/MX etc). <item>Your monitor's sync frequencies. </itemize> @@ -168,10 +89,10 @@ <p> X11R&relvers; has support for the mouse driver included in -the new <bf/wscons/ console driver introduced by OpenBSD-2.9. +the new <bf/wscons/ console driver. Specify ``<tt/wsmouse/'' as the protocol and -``<tt>/dev/wsmouse0</tt>'' as the device in <tt>/etc/X11/xorg.conf</tt> -if you're using OpenBSD-2.9 or later with a PS/2 or USB mouse. +``<tt>/dev/wsmouse</tt>'' as the device in <tt>/etc/X11/xorg.conf</tt> +with a PS/2 or USB mouse. <p> See <htmlurl url="mouse.html" name="README.mouse"> for general instruction on mouse configuration. @@ -187,15 +108,11 @@ To start the display manager, log in as root on the console and type: ``<tt/xdm -nodaemon/''. -You can start xdm automatically on bootup by changing the line -<tscreen><verb> -xdm_flags=NO # for normal use: xdm_flags="" -</verb></tscreen> -to: +You can start xdm automatically on bootup by adding the line: <tscreen><verb> xdm_flags="" # for normal use: xdm_flags="" </verb></tscreen> -in <tt>/etc/rc.conf</tt>. +in <tt>/etc/rc.conf.local</tt>. <sect1>Running X without the display manager <p> @@ -211,21 +128,12 @@ <sect>Kernel Support for X <p> -To make sure X support is enabled under OpenBSD, the following -line must be in your config file in <tt>/sys/arch/i386/conf</tt>: - -<tscreen> - option APERTURE -</tscreen> +OpenBSD's GENERIC kernels have all support for running X enabled. <sect1>Console drivers <p> The server supports wscons, the standard OpenBSD/i386 console driver. -<p> -The pcvt console driver which was the default up to OpenBSD -2.8, is also supported on those releases. - <sect1>Aperture Driver <p> By default OpenBSD includes the BSD 4.4 kernel security @@ -281,8 +189,12 @@ <label id="otherarch"> <p> -X11R&relvers; also compiles on other OpenBSD architectures. -<sect1>X11R&relvers; on OpenBSD/alpha +X11R&relvers; compiles on most OpenBSD architectures. The X.Org +X server builds and run on the following systems. On other +architectures supported by OpenBSD, only client side libraries and +applications are supported. + +<sect1>OpenBSD/alpha <p> The X server is known to work on some VGA cards in alpha machines that support BWX I/O, with OpenBSD 3.2 and higher. @@ -300,12 +212,11 @@ version shipped with OpenBSD 3.1 and higher includes an OS-specific driver <em/wsfb/ that is used to support TGA cards. -<sect1>X11R&relvers; on OpenBSD/macppc +<sect1>OpenBSD/macppc <p> -The X server is currently known to work on the G4 Macs and new -iBooks with ATI Rage 128 cards running OpenBSD 3.0 or later. -Other machines are more or less untested. Earlier OpenBSD versions -lack some kernel support for it. +The X server is currently known to work on most of the G4 Macs and +iBooks with ATI or nVidia cards. +Other machines are more or less untested. <p> Use xorgconfig to build a /etc/X11/xorg.conf file before starting the server for the first time. @@ -326,20 +237,10 @@ <sect1>OpenBSD/sparc64 <p> -This version only has support for X clients on -OpenBSD/sparc64. Note that the version shipped with OpenBSD also has -support for the X server on both SBus and PCI based machines. - +This version only has support PCI based machines using ATI cards on +OpenBSD/sparc64. Note that the version shipped with OpenBSD has +support for the X server on both SBus and UPA (unaccelerated) based cards. -<sect>Building New X Clients - -<p> -The easiest way to build a new client (X application) is to use -<tt/xmkmf/ if an <tt/Imakefile/ is included in the sources. Type -``<tt/xmkmf -a/'' to create the Makefiles, check the configuration if -necessary and type ``<tt/make/''. Whenever you install additional man -pages you should update <tt/whatis.db/ by running ``<tt>makewhatis -/usr/X11R6/man</tt>''. <sect> Thanks <p> @@ -347,6 +248,7 @@ *BSD, in particular: <bf/David Dawes/, <bf/Todd Fries/, +<bf/Miodrag Vallat/, <bf/Rod Grimes/, <bf/Charles Hannum/, <bf/Amancio Hasty/, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml 2004-09-04 00:00:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml 2005-02-09 00:25:54.000000000 +0100 @@ -95,7 +95,7 @@ and active participants in the further development of the X Window Technology are invited to complete a <url url="http://www.x.org/XOrg_Foundation_Membership.html" name="membership application">. -The X11R&relvers; codebase forms the second X window system release since +The X11R&relvers; codebase forms the &whichxorgrel; X window system release since the formation of the X.org foundataion and includes code from the X Consortium, the Open Group and the XFree86™ project. This release is dedicated to the greater X community, developers diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml 2004-09-04 02:22:32.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml 2005-02-09 00:54:04.000000000 +0100 @@ -118,12 +118,13 @@ to config/cf/host.def. -<item> The XTT font module and FreeType1 have been retired because FreeType2 subsumes +<item>The XTT font module and FreeType1 have been retired because FreeType2 subsumes their functionality -<item> Retire old PS Type1 font rasterizer (except for CID font usage) since the FreeType2 rasterizer now handles PS Type1 (*.pfa, *.pfb) +<item>Retire old PS Type1 font rasterizer (except for CID font usage) since the FreeType2 rasterizer now handles PS Type1 (*.pfa, *.pfb) <item>Render implementation fixes <item>Updated x86emu and resynced with upstream at Scitech <item>Updated SiS driver +<item>Updated Nvidia driver (opensource version) <item>Render acceleration for ATI's R100 and R200-series cards <item>Substantial speedups in the software implementation of the render extensions when compiled with gcc 3.4 on the i386 architecture. @@ -134,8 +135,9 @@ <item>Allow backward compatibility but internally covert to new format </itemize> <item>Software mouse cursor is now based on the Damage extension -<item>A new keyboard driver is enabled by default. The old driver is disabled unless explicitly compiled in by defining the macro USE_DEPRECATED_KEYBOARD_DRIVER -<item>Extensions can be enabled/disabled from the configuration file and from the command line +<item>A new keyboard driver is enabled by default. The old driver is disabled unless explicitly compiled in by defining the macro |USE_DEPRECATED_KEYBOARD_DRIVER|. +<item>All extensions (except Xserver-specific extensions "DMX" and "XpExtension") can now be +enabled/disabled from the configuration file and from the command line. <item>Mac OS X updates: <itemize> <item>Support dynamic screen configuration changes in rootless mode @@ -145,6 +147,7 @@ <item>Fixed launch of X clients from Finder with a space in their path <item>Fixed some GLX rendering problems on Mac OS X 10.2 and earlier </itemize> +<item>Updated xterm version </itemize> <sect1>New X extensions @@ -229,89 +232,92 @@ Xprint updates <p> <itemize> - <item>Integrated various fixes from xprint.mozdev.org (more or less the whole codebase has been merged) + <item>Integrated various fixes from <url name="xprint.mozdev.org" url="http://xprint.mozdev.org"> (more or less the whole codebase has been merged) <item>Integrated various fixes from Sun Microsystems <item>OpenGL is now supported for printing <item>New set of maintenance tools for the Xprint server (xplsprinters, xprehashprinterlist, etc.) - <item>Added new XprintUtils client library to make the usage off Xprint easier + <item>Added new XprintUtils client library to make the usage of Xprint easier <item>Various other features and fixes integrated <item>Athena toolkit now has print support (XawPrintShell) which is included - in a separate version of that library (Xaw8) - <item>Various applications/tools like xman, xedit, xlogo, etc. now have - print support + in a new version of that library (Xaw8) + <item>Various applications/tools like xman, xedit, xlogo, xlsfonts, etc. + now have print support </itemize> <sect1>Updated Mesa and DRI from upstream sources <P> - <itemize> - <item>More OpenGL extensions - <item>MergedFB for Radeon (Dualhead DRI support on these cards) - <item>Many GLX fixes - <item>Working SiS DRI driver - <item>Major Radeon and R200 DRI driver updates - <item>fbconfigs support - <item>Beginnings of pbuffer support (indirect only, and only in specific circumstances). - <item>Merge Mach64 DRI support (Eric Anholt, July 23) - </itemize> + <itemize> + <item>Mesa version has been updated to 6.2.1 (in X11R6.8.2) + <item>More OpenGL extensions + <item>MergedFB for Radeon (Dualhead DRI support on these cards) + <item>Many GLX fixes + <item>Working SiS DRI driver + <item>Major Radeon and R200 DRI driver updates + <item>fbconfigs support + <item>Beginnings of pbuffer support (indirect only, and only in specific circumstances). + <item>Merge Mach64 DRI support (Eric Anholt, July 23) + </itemize> <sect1>Video driver enhancements <p> <itemize> - <item>SiS driver updates include - <itemize> - <item>output device hotplugging - <item>lots of fixes for 661, 741, 760 - <item>extended interface for SiSCtrl? - <item>extended LCD handling (allow more modes) - <item>HDTV support (480p, 480i, 720p. 1080i; 315/330 series) - <item>Added video blitter Xv adapter (315/330 series) - <item>extended RENDER acceleration - </itemize> - <item>Radeon driver updates: - <itemize> - <item>Merged Framebuffer support (dualhead with DRI) - <item>DynamicClocks option (reduced power usage) - <item>Render acceleration (r100, r200 chips only) - <item>Support for new ATI chips (R420/M18, R423, RV370/M22, RV380/M24, RS300) - <item>DRI support for IGP chips - <item>Xv gamma correction - <item>Updated 3D drivers - <item>Many other small fixes - </itemize> - <item>Neomagic driver updates - <itemize> - <item>Support for Xv on pre-nm2160 chips - <item>Pseudocolor overlay mode - <item>Improved support for lowres double scan modes - </itemize> - <item>MGA driver updates - <itemize> - <item>Support for DDC and DPMS on second head on G400 - <item>Updated 3D driver - </itemize> - <item>i810 driver updates - <itemize> - <item>Dualhead support (i830+) - <item>i915 support - <item>New 3D driver (i830+) - </itemize> - <item>Savage driver updates - <itemize> - <item>Pseudocolor overlay mode - </itemize> - <item>S3 driver updates - <itemize> - <item>Support for additional IBM RAMDACS - </itemize> - <item>Chips driver update - <itemize> - <item>Improved BE support - </itemize> - <item>New Voodoo driver (Alan Cox) - <itemize> - <item>Provides native (glide-less) acceleration and mode setup for voodoo/voodoo2 boards - </itemize> - </itemize> + <item>ATI Radeon driver updates: + <itemize> + <item>Merged Framebuffer support (dualhead with DRI) + <item>DynamicClocks option (reduced power usage) + <item>Render acceleration (r100, r200 chips only) + <item>Support for new ATI chips (R420/M18, R423, RV370/M22, RV380/M24, RS300) + <item>DRI support for IGP chips + <item>Xv gamma correction + <item>Updated 3D drivers + <item>Many other small fixes + </itemize> + <item>Chips driver update + <itemize> + <item>Improved BE support + </itemize> + <item>MGA driver updates + <itemize> + <item>Support for DDC and DPMS on second head on G400 + <item>Updated 3D driver + </itemize> + <item>Neomagic driver updates + <itemize> + <item>Support for Xv on pre-nm2160 chips + <item>Pseudocolor overlay mode (=PseudoColor emulation) + <item>Improved support for lowres double scan modes + </itemize> + <item>i810 driver updates + <itemize> + <item>Dualhead support (i830+) + <item>i915 support + <item>New 3D driver (i830+) + <item>i810 driver is now supported for AMD64 + </itemize> + <item>S3 driver updates + <itemize> + <item>Support for additional IBM RAMDACS + </itemize> + <item>Savage driver updates + <itemize> + <item>Pseudocolor overlay mode + </itemize> + <item>SiS driver updates include + <itemize> + <item>output device hotplugging + <item>lots of fixes for 661, 741, 760 + <item>extended interface for SiSCtrl? + <item>extended LCD handling (allow more modes) + <item>HDTV support (480p, 480i, 720p. 1080i; 315/330 series) + <item>Added video blitter Xv adapter (315/330 series) + <item>extended RENDER acceleration + <item>SiS driver now supported on AMD64 + </itemize> + <item>New Voodoo driver (Alan Cox) + <itemize> + <item>Provides native (glide-less) acceleration and mode setup for voodoo/voodoo2 boards + </itemize> +</itemize> <sect>Drivers <P> @@ -418,6 +424,27 @@ listed above. Further information can be found in <htmlurl name="README.Darwin" url="Darwin.html">. +X11R&relvers; includes the following print drivers: + +<sect1>Print Drivers +<p> + +<table border=1 align="center"> +<tabular ca="|l|l|l|"> + <tabrow>Driver Name<colsep>Description<colsep>Further Information</tabrow> + <hline> + <tabrow><tt>PostScript</tt><colsep>PostScript driver<colsep> </tabrow> + <tabrow><tt>PCL</tt><colsep>PCL color driver<colsep> </tabrow> + <tabrow><tt>PCL-MONO</tt><colsep>PCL monocrome driver<colsep> </tabrow> + <tabrow><tt>RASTER</tt><colsep>Monocrome raster driver (XWD, PS, PCL)<colsep> </tabrow> +<!-- not yet + <tabrow><tt>SVG</tt><colsep>Scaleable Vector Graphics driver<colsep> </tabrow> +--> +</tabular> +</table> + +Drivers marked with (*) are available for Linux only. + X11R&relvers; includes the following input drivers: <sect1>Input Drivers @@ -445,9 +472,9 @@ <tabrow><tt>hyperpen</tt><colsep>Aiptek HyperPen 6000<colsep> </tabrow> <tabrow><tt>js_x</tt><colsep>JamStudio pentablet<colsep><htmlurl name="js_x(4)" url="js_x.4.html"></tabrow> - <tabrow><tt>kbd</tt><colsep>generic keyboards (alternate)<colsep><htmlurl + <tabrow><tt>kbd</tt><colsep>generic keyboards (loadable module)<colsep><htmlurl name="kbd(4)" url="kbd.4.html"></tabrow> - <tabrow><tt>keyboard</tt><colsep>generic keyboards<colsep><htmlurl + <tabrow><tt>keyboard</tt><colsep>generic keyboards (builtin driver)<colsep><htmlurl name="keyboard(4)" url="keyboard.4.html"></tabrow> <tabrow><tt>microtouch</tt><colsep>MicroTouch<colsep> </tabrow> <tabrow><tt>mouse</tt><colsep>most mouse devices<colsep><htmlurl @@ -639,8 +666,7 @@ <sect1>XVideo Extension (Xv) <p> - -The XVideo extension is supported in X11R6.7.x. +The XVideo extension is supported in X11R6.7.x and newer releases. An XvQueryPortAttributes function has been added as well as support for XvImages. XvImages are XImages in alternate color spaces such as YUV and can be passed to the server through shared memory @@ -692,7 +718,11 @@ and <tt>/etc/fonts/local.conf</tt>, which contains information about which directories contain font files and also provides a sophisticated font aliasing mechanism. Documentation for that -file is included in the <htmlurl name="Xft(3)" url="Xft.3.man"> man page. +file is included in the +<htmlurl name="Xft(3)" url="Xft.3.man">, +<htmlurl name="fontconfig(3)" url="fontconfig.3.man"> and +<htmlurl name="fonts.conf(4)" url="fonts.conf.4.man"> +man pages. </sect2> @@ -756,7 +786,7 @@ <item>Flexible search/replace interface that allows regex matches. <item>Please refer to <tt><htmlurl name="xedit(1)" url="xedit.1.html"></tt> for more details. - <item>XPrint support. + <item>Support for printing via Xprint. </itemize> <!-- @@ -767,17 +797,18 @@ <sect1>Font support <p> -Details about the font support in X11R&relvers;.x can be found +Details about the font support in X11R&lastfullrelvers;.x can be found in the <htmlurl name="README.fonts" url="fonts.html"> document. <sect1>TrueType support <p> X11R6.7 came with two TrueType backends. The functionality from the -`X-TrueType' backend has been integrated into the `FreeType' backend which -is designed to transparently support all of the functionality from the -`X-TrueType' backend with the exception of the font encoding libraries; the -`FreeType' backend uses only the fontenc-based encoding system . +`X-TrueType' (="XTT") backend has been integrated into the `FreeType' +backend which is designed to transparently support all of the functionality +from the `X-TrueType' backend with the exception of the font encoding +libraries; the `FreeType' backend uses only the fontenc-based encoding +system. <sect1>CID font support <p> @@ -904,7 +935,7 @@ and 15. The license terms for the Vera fonts are inclued in the file -<tt/COPYRIGHT.Vera/>. +<tt/COPYRIGHT.Vera/. <sect1>Luxi fonts from Bigelow and Holmes <label id="luxi"> <p> @@ -1029,30 +1060,44 @@ <tag>These people contributed in some way to X11R&relvers;</tag> Paul Anderson, Eric Anholt, +Dave Airlie, +Donnie Berkholz, Daniel Berrange, +Thomas Biege, Russ Blaine, Ryan Breen, Alan Coopersmith, +Jay Cotton, Michel Daenzer, David Dawes, +Kevin DeKorte, Alex Deucher, Stefan Dirsch, Egbert Eich, Rik Faith, Jim Gettys, +Giuseppe Ghibò, +Thomas Gilg, Alexander Gottwald, Mike A. Harris, John Harper, John Heasley, +Jeremy Huddleston, Matthieu Herrb, Alan Hourihane, +Jay Hobson, +Matthias Hopf, Kristian Høsberg, Harold L. Hunt II, Adam Jackson, +Daniel Jacobowitz, Deron Johnson, +Masaki Katakai, +Stephen Kennedy, Ivan Kokshaysky, Stuart Kreitman, -Peter Kunzman, +Peter Kunzman, +Julien Lafon, Nolan Leake, Ryan Lortie, Andreas Luik, @@ -1060,18 +1105,27 @@ Roland Mainz, Guy Martin, Kevin E. Martin, +Dan McNichol, +Dagfinn Ilmari Mannsaker, +Simon Montagu, Keith Packard, Greg Parker, +Drew Parsons, Aaron Plattner, +Branden Robinson, Søren Sandmann, Ty Sarna, Yu Shao, +Gustavo Noronha Silva, Bryan Stine, Owen Taylor, Travis Tilley, Ryan Underwood, Ronny Vindenes, -Chisato Yamauchi +Chisato Yamauchi, +Mark Vojkovich, +Tim Yamin, +Hui Yu </descrip> <p> @@ -1089,14 +1143,15 @@ Jehan Bing, Peter Breitenlohner, Alan Coopersmith, +Thomas Dickey, Egbert Eich, John Dennis, Fabrizio Gennari, Jim Gettys, Alexander Gottwald, -Ralf Habacker +Ralf Habacker, Mike Harris, -Mattheiu Herrb +Mattheiu Herrb, Alan Hourihane, Harold L Hunt II, Elliot Lee, @@ -1106,7 +1161,7 @@ Andreas Luik, Torrey Lyons, Roland Mainz, -Kevin E. Martin, +Kevin E. Martin, Takuma Murakami, Kensuke Matsuzaki, Keith Packard, @@ -1115,8 +1170,7 @@ Benjamin Rienfenstahl, Leon Shiman, Toshimitsu Tanaka, -Nicholas Wourms. - +Nicholas Wourms, 2d3d Inc., Aaron Plattner, Adam de Boor, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml 2004-04-23 21:23:59.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/SiS.sgml 2005-02-08 01:19:04.000000000 +0100 @@ -7,7 +7,7 @@ <!-- Title information --> <title>Information for SiS Users <author>Thomas Winischhofer (<email>thomas@winischhofer.net</email>) -<date>5 October 2003 +<date>7 February 2005 <ident> </ident> @@ -17,137 +17,152 @@ <sect> Introduction <p> -This driver is written by Thomas Winischhofer and is a (nearly) complete re-write -of a driver written for the SiS6326 and SiS530 by Alan Hourihane and others. +This driver is written by Thomas Winischhofer and is a (nearly) complete +re-write of a driver written for the SiS6326 and SiS530 by Alan Hourihane +and others. It currently supports the following chipsets: <itemize> <item>old series: 5597/5598, 6236/AGP/DVD, 530/620 <item>300 series: 300/305, 540, 630/730 - <item>315 series: 315, 550, 650, 651, M650, 740 - <item>330 series: 330 ("Xabre"), 661FX, M661FX, 741, 760 + <item>315 series: 315/E/PRO, 550/551/552, 650, 651, M650, 740 + <item>330 series: 330 ("Xabre"), [M]661[F/M]X, [M]741[GX], [M]760[GX] </itemize> -The driver supports: +Among other features, the driver supports <itemize> - <item>8/16/24 bits color depth; old series also 15; - <item>XAA - <item>XVideo (Xv) - <item>Render (XRAND) - <item>Hardware cursor; 315/330 series: Color HW cursor; + <item>8/16/24 bits color depth; old series also 15 + <item>Hardware cursor; 315/330 series: Color HW cursor + <item>XAA; XVideo (Xv); RENDER (XRAND) and other extensions <item>6326: TV output <item>300/315/330 series: TV output via Chrontel TV encoders or SiS video bridges <item>300/315/330 series: LCD output via LVDS transmitters or SiS video bridges - <item>300/315/330 series: Dual head mode; Xinerama; Merged framebuffer mode; + <item>300/315/330 series: Dual head mode; Xinerama; Merged framebuffer mode </itemize> -This document gives an overview over the driver's features and configuration options. -Please see http://www.winischhofer.net/linuxsisvga.shtml for detailed documentation -and updates. Support for the 661, 741 and 760 is entirely untested as of this writing, -and possibly incomplete for LCD output. +This document provides a brief overview over the driver's features and +configuration options. Please see http://www.winischhofer.at/linuxsisvga.shtml +for detailed documentation and updates. <sect> xorg.conf Options <p> -The following options are of particular interest for the SiS -driver. Each of them must be specified in the Device section of the -xorg.conf file for this card. +The following options are of particular interest for the SiS driver. Each of them +must be specified in the Device section of the xorg.conf file for this card. -<sect1>For all chipsets<p> +In the list below, the options' arguments are described by type. For "boolean", +the keywords "on", "true" and "yes", as well as "off", "false" and "no" respectively +have the same meaning. + +<sect1> For all chipsets<p> <descrip> -<tag>Option "SWCursor", "HWCursor"</tag> +<tag>Option "SWCursor" [boolean]</tag> +<tag>Option "HWCursor" [boolean]</tag> These options select whether the software (SW) or hardware (HW) cursor should be used. The default is using the hardware cursor. -<tag>Option "NoAccel"</tag> - Disables 2D acceleration. Default: 2D acceleration is enabled. -<tag>Option "Turboqueue"</tag> - SiS chipsets have the option to extend the engine command queue on - VRAM. This concept is called "TurboQueue" and gives some performance improvement. - Due to hardware bugs, the TurboQueue is disabled on the 530/620, otherwise - enabled by default. -<tag>Option "Rotate"</tag> - This option enables clockwise ("CW") or counter-clockwise ("CCW") rotation of +<tag>Option "NoAccel" [boolean]</tag> + Disables 2D acceleration. By default, 2D acceleration is enabled. +<tag>Option "Rotate" [string]</tag> + This option enables clockwise ("CW") or counter-clockwise ("CCW") rotation of the display. Enabling either CW or CCW rotation disables the RandR extension. Default: no rotation. -<tag>Option "ShadowFB"</tag> - This option enables the shadow framebuffer layer. By default, it is disabled. -<tag>Option "NoXVideo"</tag> - Disables the XVideo support. Default: XVideo support is enabled. -<tag>Option "CRT1Gamma"</tag> - Enables or disables gamma correction. Default: gamma correction is enabled. +<tag>Option "ShadowFB" [boolean]</tag> + This option enables the shadow framebuffer layer. By default, it is disabled. +<tag>Option "NoXVideo" [boolean]</tag> + Disables the XVideo (Xv) support. By default, XVideo support is enabled. +<tag>Option "CRT1Gamma" [boolean]</tag> + Enables or disables gamma correction. Default: gamma correction is enabled. </descrip> -<sect1>old series specific options <p> +<sect1> old series specific options <p> <descrip> -<tag>Option "FastVram"</tag> - Enables 1 cycle memory access for read and write operations. The default +<tag>Option "FastVram" [boolean]</tag> + Enables 1 cycle memory access for read and write operations. The default depends on the chipset used. -<tag>Option "NoHostBus"</tag> - For 5597/5598 only. This option, if set, disables the CPU to VGA host bus. +<tag>Option "Turboqueue" [boolean]</tag> + SiS chipsets have the ability to extend the engine command queue in + video RAM. This concept is called "TurboQueue" and gives some performance + improvement. Due to hardware bugs, the TurboQueue is disabled on the 530/620, + otherwise enabled by default. +<tag>Option "NoHostBus" [boolean]</tag> + For 5597/5598 only. This option, if set, disables the CPU to VGA host bus. Disabling the host bus will result in a severe performance regression. -<tag>VideoRAM size</tag> The SiS 6326 can only directly address 4096K - bytes of video RAM. However, there are some cards out there featuring - 8192K (8MB) of video RAM. This RAM is not addressable by the engines. - Therefore, by default, the driver will only use 4096K. This behavior - can be overridden by specifying the amount of video RAM using the - VideoRAM keyword. If more than 4096K is specified, the driver will - disable 2D acceleration, Xv and the HW cursor. On all other chipsets, - this keyword is ignored. -<tag>Option "NoYV12"</tag> - Due to hardware bugs, XVideo may display a corrupt image when using +<tag>VideoRAM [size]</tag> + The SiS 6326 can only directly address 4096K bytes of video RAM. However, + there are some cards out there featuring 8192K (8MB) of video RAM. This RAM + is not addressable by the engines. Therefore, by default, the driver will + only use 4096K. This behavior can be overridden by specifying the amount of + video RAM using the VideoRAM keyword. If more than 4096K is specified, the + driver will disable 2D acceleration, Xv and the HW cursor. On all other + chipsets, this keyword is ignored. The size argument is expected in KB, but + without "KB". +<tag>Option "NoYV12" [boolean]</tag> + Due to hardware bugs, XVideo may display a corrupt image when using YV12 encoded material. This option, if set, disables support for YV12 and hence forces the Xv-aware application to use either YUV2 or XShm for video output. -<tag>Option "TVStandard"</tag> +<tag>Option "TVStandard" [string]</tag> (6326 only) Selects the TV output standard. May be PAL or NTSC. By default, this is selected by a jumper on the card. </descrip> -<sect1>300/315/330 series specific options<p> +<sect1> 300/315/330 series specific options<p> <descrip> -<tag>Option "ForceCRT1"</tag> - Enables or disables CRT1 (= the external VGA monitor). By default, +<tag>Option "EnableSiSCtrl" [boolean]</tag> + This option enables/disables the driver's interface for the SiSCtrl + utility. Please see http://www.winischhofer.at/linuxsisvga.shtml + for more information. +<tag>Option "Turboqueue" [boolean]</tag> + (300 series only) SiS chipsets have the ability to extend the engine + command queue in video RAM. This concept is called "TurboQueue" and gives + some performance improvement. The TurboQueue is enabled by default. +<tag>Option "ForceCRT1" [boolean]</tag> + Enables or disables CRT1 (= the external VGA monitor). By default, the driver will use CRT1 if a monitor is detected during server start. Some older monitors can't be detected, so they may require setting this option to true. To disable CRT1 output, set this option to false. -<tag>Option "ForceCRT1Type"</tag> - SiS 650, M650 and 651 with either 301LV or 302LV video bridge only. - May be VGA or LCD. Specifying LCD will force the driver to use the - VGA controller's CRT1 channel for driving the LCD, while CRT2 is - free for TV usage. Default is VGA. -<tag>Option "ForceCRT2Type"</tag> - Selects the CRT2 output device type. Valid parameters are LCD, TV, - SVIDEO, COMPOSITE, SCART, VGA, NONE. NONE disables CRT2. SVIDEO and - COMPOSITE are only for systems with a SiS video bridge and select the - desired plug type. For Chrontel systems, TV should be used instead. - VGA means secondary VGA and is only available on some SiS video bridges +<tag>Option "ForceCRT1Type" [string]</tag> + (For SiS 650, M650, 651, 661, 741, 760 with either SiS 301LV, 302LV or + SiS 301C video bridge only) The argument may be "VGA" or "LCD". Specifying + LCD will force the driver to use the VGA controller's CRT1 channel for + driving the LCD while CRT2 is free for TV usage. Default is VGA. +<tag>Option "ForceCRT2Type" [string]</tag> + Selects the CRT2 output device type. Valid parameters are "LCD", "TV", + "SVIDEO", "COMPOSITE", "SVIDEO+COMPOSITE", "SCART", "VGA", "YPBPR480I", + "YPBPR480P", "YPBPR720P", "YPBPR1080I" or "NONE". NONE disables CRT2. + SVIDEO, COMPOSITE, SVIDEO+COMPOSITE, SCART and all the YPBPR alternatives + are only for systems with a SiS video bridge and select the desired plug + or tv standard type. For Chrontel systems, TV should be used instead. VGA + means secondary VGA and is only available on some SiS video bridges (301, 301B, 301C). -<tag>Option "CRT2Gamma"</tag> - Enables or disables gamma correction for CRT2. This is only supported - for SiS video bridges. Default: gamma correction for CRT2 is enabled. -<tag>Option "DRI"</tag> +<tag>Option "CRT2Gamma" [boolean]</tag> + (For SiS video bridges only) This option enables or disables gamma + correction for CRT2. Default: gamma correction for CRT2 is enabled. +<tag>Option "DRI" [boolean]</tag> Although this option is accepted for all chipsets, it currently only makes sense on the 300 series; DRI is only supported on these chipsets. This option enables/disables DRI. -<tag>Option "TVStandard"</tag> +<tag>Option "TVStandard" [string]</tag> Selects the TV output standard. May be PAL or NTSC, on some machines (depending on the hardware) also PALM and PALN. Default: BIOS setting. -<tag>Option "TVXPosOffset", "TVYPosOffset"</tag> +<tag>Option "TVXPosOffset" [integer]</tag> +<tag>Option "TVYPosOffset" [integer]</tag> These options allow relocating the image on your TV. Both options take an integer within the range of -16 to 16. Default: 0. Not supported for Chrontel 7019. -<tag>Option "CHTVOverscan"</tag> - For Chrontel TV encoders only. Selects whether TV output should be +<tag>Option "CHTVOverscan" [boolean]</tag> + (For Chrontel TV encoders only) Selects whether TV output should be overscan or underscan. -<tag>Option "CHTVSuperOverscan"</tag> - For Chrontel 7005 TV encoders in PAL mode only. Selects whether TV output +<tag>Option "CHTVSuperOverscan" [boolean]</tag> + (For Chrontel 7005 TV encoders in PAL mode only) Selects whether TV output should be super-overscan (slightly larger than the viewable area) or not. -<tag> Option "SISTVXScale", "SISTVYScale"</tag> - For SiS video bridges only. These options allow zooming the image on +<tag>Option "SISTVXScale" [integer]</tag> +<tag>Option "SISTVYScale" [integer]</tag> + (For SiS video bridges only) These options allow zooming the image on your TV. SISTVXScale takes an integer within the range of -16 to 16. SISTVYScale accepts -4 to 3. Default: 0. Not all modes can be scaled. </descrip> @@ -155,50 +170,52 @@ <sect1> 300 series specific options<p> <descrip> -<tag>Option "MaxXFBMem"</tag> - DRI requires the linux kernel's SiS framebuffer driver "sisfb" and some - other modules which come with either the linux kernel or X11R&relvers;. (On *BSD, - the DRI driver does not require any framebuffer driver.) - Sisfb takes care of memory management for texture data. In order to prevent - the X driver and sisfb from overwriting each others video memory, sisfb - reserves an amount of video memory for the X driver. This amount can either - be selected using sisfb's mem parameter, or auto-selected depending on the - amount of total video RAM available. However, the X driver needs to know about - the amount of RAM sisfb reserved. For this purpose, the Option "MaxXFBMem" exists. - - XFree 4.3.0 disabled SiS DRI support due to a lack of maintenance of the SiS DRI - driver. X11R&relvers; and X11R&relvers; and XFree86 4.4 contains a newly written - SiS DRI driver by Eric Anholt. - - If you intend to use DRI, I recommend setting the total video memory in the BIOS - to 64MB in order to at least overcome the lack of memory swap functions. - - Sisfb can be used for memory management only, or as a complete framebuffer driver. - If you start sisfb with a valid mode (ie you gain a graphical console), the X driver - can communicate with sisfb and doesn't require setting the MaxXFBMem option at all. - The X driver will receive enough information from sisfb in this case. - - However, if you use sisfb for memory management only, ie you started sisfb with - mode=none and still have a text mode console, there is no communication between sisfb - and the X driver. In this case, you need to set MaxXFBMem to the same value as you - gave sisfb with its mem parameter. If you didn't specify any mem parameter, sisfb - will reserve 12288KB if more than 16MB of total video RAM is available, 8192KB if - between 12 and 16MB of video RAM is available, 4096KB in all other cases. - - Then you need to specify any of these amounts as the parameter for the MaxXFBMem - option. The value is to be given without 'KB'. +<tag>Option "MaxXFBMem" [size]</tag> + This option might only be needed if you are running X on a Linux 2.4 series + kernel. This option is not needed and should be omitted on Linux 2.6 and *BSD. + + The Linux kernel features a framebuffer driver named "sisfb" which takes care + of memory management for DRI/DRM (such as for 3D texture data). In order to + keep the X driver and sisfb from overwriting each other's video memory, sisfb + reserves a certain amount of video memory for the X driver. Reserved memory + is for X 2D, pixmap cache and video data only. Sisfb will not present this + memory to the DRI. The amount of reserved memory can either be selected using + sisfb's mem parameter or auto-selected depending on the total amount of video + RAM available. + + Fact of the matter is, the X driver needs to know about the amount of RAM + sisfb reserved. For this purpose, the Option "MaxXFBMem" exists. + + If you start sisfb with a valid mode (ie you run a graphical console), the + X driver can communicate with sisfb and doesn't require setting the MaxXFBMem + option at all. The X driver will receive enough information from sisfb in + this case. + + If you, on the other hand, use sisfb for memory management only, ie you started + sisfb with mode=none and still have a text mode console, there is no communication + between sisfb and the X driver. In this - and ONLY this - case, you need to set + MaxXFBMem to the same value as you gave sisfb with its mem parameter. If you + didn't specify any mem parameter, sisfb will reserve (and you will have to + specify by MaxXFBMem) 12288KB if more than 16MB of total video RAM is available, + 8192KB if between 12 and 16MB of video RAM is available, 4096KB in all other + cases. The size is expected in KB, without the "KB". + + Final word of advice: If you intend to use DRI on an integrated chipset (such + as the 630/730), it is recommended to set the total video memory in the BIOS to + 64MB in order to at least overcome the DRI driver's lack of memory swap functions. </descrip> <sect1> 315/330 series specific options<p> <descrip> -<tag>Option "RenderAcceleration"</tag> - Enables or disables RENDER acceleration. By default, RENDER acceleration - is enabled. -<tag>Option "XvOnCRT2"</tag> - 315, 650, 740, 330 only. This option selects whether the XVideo (Xv) - overlay should be displayed on CRT1 or CRT2. Setting this options - means CRT2. The other CRT will only display the (blue) color key. +<tag>Option "RenderAcceleration" [boolean]</tag> + Enables or disables RENDER acceleration. This feature, for instance, accelerates + output of anti-aliased text. By default, RENDER acceleration is enabled. +<tag>Option "XvOnCRT2" [boolean]</tag> + (For 315, 650, 740, 330 only) This option selects whether the XVideo (Xv) + overlay should be displayed on CRT1 or CRT2. Setting this option means CRT2. + The other CRT will only display the (by default: blue) color key or a black/red + pattern. </descrip> Document based on 4.1 version written by Joanjo Santamarta and 3.3 version diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml --- xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml 2004-08-19 18:28:42.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml 2005-02-08 00:15:26.000000000 +0100 @@ -9,7 +9,7 @@ <date>2004 August 18 <ident> -$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml,v 1.3 2004/08/19 16:28:42 kem Exp $ +$XdotOrg: xc/programs/Xserver/hw/xfree86/doc/sgml/Solaris.sgml,v 1.3.2.1 2005/02/07 23:15:26 gisburn Exp $ </ident> <!-- Table of contents --> @@ -195,6 +195,11 @@ The SPARC port is still quite new, so instability is to be expected (and reported!). It might even have broken some aspects of the x86 port.<p> +<item> +The <tt>kbd</tt> driver is not yet supported on Solaris, but the server +still logs a message that it can't find the <tt>Keyboard</tt> driver and +suggests you use <tt>kbd</tt>. That message should be ignored in this +release. </enum> <sect>Bug Notification<p> Bug reports should be reported using the bugzilla.freedesktop.org using the diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent x11r682/xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent --- xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent 2004-09-04 00:00:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/doc/sgml/defs.ent 2005-02-09 00:25:54.000000000 +0100 @@ -2,25 +2,27 @@ <!-- shared entity definitions for the XFree86 documentation --> -<!-- XFree86 version string --> +<!-- Xorg version string --> <!ENTITY majorvers CDATA "6"> -<!ENTITY reldate CDATA "8 September 2004"> -<!ENTITY relvers CDATA "6.8"> -<!ENTITY prevrelvers CDATA "6.7"> -<!ENTITY fullrelvers CDATA "6.8.0"> -<!ENTITY prevfullrelvers CDATA "6.7.0"> +<!ENTITY reldate CDATA "9 February 2005"> +<!ENTITY relvers CDATA "6.8.2"> +<!ENTITY lastfullrelvers CDATA "6.8"> +<!ENTITY prevrelvers CDATA "6.8.1"> +<!ENTITY fullrelvers CDATA "6.8.2"> +<!ENTITY prevfullrelvers CDATA "6.8.0"> <!ENTITY nextrelvers CDATA "7.0"> <!ENTITY nextfullrelvers CDATA "7.0.0"> -<!ENTITY nextfullreldate CDATA "early 2005"> -<!ENTITY nextupdrelvers CDATA "6.8.1"> +<!ENTITY nextfullreldate CDATA "mid-2005"> +<!ENTITY nextupdrelvers CDATA "6.8.3"> <!ENTITY srcvers CDATA "440"> -<!ENTITY prevsrcvers CDATA "660"> +<!ENTITY prevsrcvers CDATA "680"> <!ENTITY fullsrcvers CDATA "440"> -<!ENTITY prevfullsrcvers CDATA "660"> +<!ENTITY prevfullsrcvers CDATA "680"> <!ENTITY whichfullrel CDATA "eighth"> -<!ENTITY whichupdaterel CDATA "none"> -<!ENTITY reltag CDATA "XORG-6_8_0"> +<!ENTITY whichxorgrel CDATA "fourth"> +<!ENTITY whichupdaterel CDATA "second"> +<!ENTITY reltag CDATA "XORG-6_8_2"> <!ENTITY relbranchtag CDATA "XORG-6_8-branch"> <!ENTITY rcnum CDATA "0"> diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile --- xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile 2004-07-31 00:20:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/Imakefile 2004-12-15 09:47:20.000000000 +0100 @@ -87,8 +87,16 @@ * Currently, ATIAvoidNonPCI needs to be set to YES for those platforms that do * not tolerate PCI master aborts. */ +/* + * Some older IA64 platforms don't mind if we are poking around in PIO + * space, however the newer once do an MC if we poke any registers outside + * a small band in the VGA range. Therefore it is best not to touch PIO + * space in IA64 at all. + * This will disenfranchise Mach8/32 users but these cards are ISA and + * there is no IA64 with ISA slots. It is not recommended to use ISA + * adaptor boards for those cards. + */ #if defined(i386Architecture) || \ - defined(ia64Architecture) || \ defined(AMD64Architecture) || \ defined(AlphaArchitecture) # ifndef ATIAvoidCPIO @@ -149,7 +157,8 @@ #endif -DEFINES = $(CPIODEFINES) $(DGADEFINES) $(NONPCIDEFINES) $(DRIDEFINES) +DEFINES = $(CPIODEFINES) $(DGADEFINES) $(NONPCIDEFINES) $(NOLEGACYDEFINES) \ + $(DRIDEFINES) SRCS1 = ati.c atiadapter.c atibus.c atichip.c atiident.c atioption.c \ atiprobe.c atividmem.c $(CPIOSRCS1) $(MODSRCS1) \ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c 2004-07-26 21:14:58.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atipreinit.c 2004-12-15 08:58:15.000000000 +0100 @@ -1918,11 +1918,11 @@ VBlankEnd += 0x0100U; pATI->LCDHBlankWidth = HBlankEnd - HBlankStart; - pATI->LCDHSyncStart = HSyncStart - HBlankStart - 1; + pATI->LCDHSyncStart = HSyncStart - HBlankStart; pATI->LCDHSyncWidth = HSyncEnd - HSyncStart; pATI->LCDVBlankWidth = VBlankEnd - VBlankStart; - pATI->LCDVSyncStart = VSyncStart - VBlankStart - 1; + pATI->LCDVSyncStart = VSyncStart - VBlankStart; pATI->LCDVSyncWidth = VSyncEnd - VSyncStart; HDisplay = HTotal + 5 - pATI->LCDHBlankWidth; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c 2004-07-30 22:30:51.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/atiprobe.c 2004-12-15 09:47:20.000000000 +0100 @@ -1243,6 +1243,10 @@ xf86MsgVerb(X_INFO, 2, ATI_NAME ": Unshared VGA not probed.\n"); } + /* + * Mach8/32 probing doesn't work well on some legacy free ia64 + * However if we use AVOID_CPIO we don't get here at all. + */ if (ATICheckSparseIOBases(NULL, ProbeFlags, 0x02E8U, 8, fChipsets[ATI_CHIPSET_IBM8514] || fChipsets[ATI_CHIPSET_MACH8] || @@ -1275,6 +1279,10 @@ ATI_NAME ": Unshared 8514/A not probed.\n"); } + /* + * Also NONPCI Mach64 probing is evil on legacy free platforms. + * However if we use AVOID_CPIO we don't get here at all. + */ for (i = 0; i < NumberOf(Mach64SparseIOBases); i++) { if (ATICheckSparseIOBases(NULL, ProbeFlags, Mach64SparseIOBases[i], @@ -1309,7 +1317,6 @@ ATIClaimSparseIOBases(ProbeFlags, Mach64SparseIOBases[i], 4, DetectedMach64); } - #endif /* AVOID_NON_PCI */ } @@ -1539,7 +1546,6 @@ ATIFindVGA(pVideo, &pVGA, &pATI, p8514, ProbeFlags); } - xf86SetPciVideo(NULL, NONE); break; } @@ -1554,6 +1560,9 @@ continue; pPCI = pVideo->thisCard; + if (pPCI == NULL) + continue; + PciReg = pciReadLong(pPCI->tag, PCI_REG_USERCONFIG); j = PciReg & 0x03U; if (j == 0x03U) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/ativga.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/ativga.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/ativga.c 2004-04-23 21:26:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/ativga.c 2004-12-15 08:58:15.000000000 +0100 @@ -185,7 +185,11 @@ (pATI->Chip >= ATI_CHIP_264CT)) pMode->CrtcHBlankStart--; pMode->CrtcHSyncStart = pMode->HSyncStart >> 3; + if (pATI->LCDPanelID >= 0) + pMode->CrtcHSyncStart--; pMode->CrtcHSyncEnd = pMode->HSyncEnd >> 3; + if (pATI->LCDPanelID >= 0) + pMode->CrtcHSyncEnd--; pMode->CrtcHBlankEnd = (pMode->HTotal >> 3) - 1; pMode->CrtcHTotal = (pMode->HTotal >> 3) - 5; pMode->CrtcHSkew = pMode->HSkew; @@ -327,6 +331,11 @@ pMode->CrtcVBlankStart++; else pMode->CrtcVBlankStart--; + if (pATI->LCDPanelID >= 0) + { + pMode->CrtcVSyncStart--; + pMode->CrtcVSyncEnd--; + } pMode->CrtcVBlankEnd--; if (pATI->Chip < ATI_CHIP_264CT) pMode->CrtcVBlankEnd--; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c 2004-06-16 11:43:58.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c 2004-12-15 10:22:02.000000000 +0100 @@ -237,17 +237,23 @@ i = 0; do { ret = drmCommandNone(info->drmFD, DRM_R128_CCE_IDLE); - } while ( ret && errno == EBUSY && i++ < R128_IDLE_RETRY ); + } while ( ret && errno == EBUSY && i++ < (R128_IDLE_RETRY * R128_IDLE_RETRY) ); if (ret && ret != -EBUSY) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: CCE idle %d\n", __FUNCTION__, ret); } + if (i > R128_IDLE_RETRY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: (DEBUG) CCE idle took i = %d\n", __FUNCTION__, i); + } + if (ret == 0) return; xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Idle timed out, resetting engine...\n"); + R128CCE_STOP(pScrn, info); R128EngineReset(pScrn); /* Always restart the engine when doing CCE 2D acceleration */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c 2004-07-10 16:22:35.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c 2004-12-15 09:53:01.000000000 +0100 @@ -1297,6 +1297,7 @@ if (info->irq) { drmCtlUninstHandler(info->drmFD); info->irq = 0; + info->gen_int_cntl = 0; } /* De-allocate vertex buffers */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c 2004-08-15 02:44:57.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c 2004-12-15 10:13:36.000000000 +0100 @@ -1640,7 +1640,11 @@ NULL, /* linePitches */ 8 * 64, /* minPitch */ 8 * 1024, /* maxPitch */ - 8 * 64, /* pitchInc */ +/* + * ATI docs say pitchInc must be 8 * 64, but this doesn't permit a pitch of + * 800 bytes, which is known to work on the Rage128 LF on clamshell iBooks + */ + 8 * 32, /* pitchInc */ 128, /* minHeight */ 2048, /* maxHeight */ pScrn->display->virtualX, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c 2004-04-23 21:26:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c 2004-12-15 10:13:36.000000000 +0100 @@ -579,20 +579,20 @@ pScreen = screenInfo.screens[pScrn->scrnIndex]; - new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16, + new_linear = xf86AllocateOffscreenLinear(pScreen, size, 8, NULL, NULL, NULL); if(!new_linear) { int max_size; - xf86QueryLargestOffscreenLinear(pScreen, &max_size, 16, + xf86QueryLargestOffscreenLinear(pScreen, &max_size, 8, PRIORITY_EXTREME); if(max_size < size) return NULL; xf86PurgeUnlockedOffscreenAreas(pScreen); - new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16, + new_linear = xf86AllocateOffscreenLinear(pScreen, size, 8, NULL, NULL, NULL); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h --- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h 2004-08-12 07:00:22.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h 2005-01-25 04:20:12.000000000 +0100 @@ -555,6 +555,7 @@ Bool RenderAccel; Bool RenderInited3D; FBLinearPtr RenderTex; + Bool RenderTexValidR100; void (*RenderCallback)(ScrnInfoPtr); Time RenderTimeout; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c 2004-07-31 00:20:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c 2004-12-16 03:08:34.000000000 +0100 @@ -198,13 +198,28 @@ return FALSE; } } else { + /* Some laptops only have one connector (VGA) listed in the connector table, + * we need to add LVDS in as a non-DDC display. + * Note, we can't assume the listed VGA will be filled in PortInfo[0], + * when walking through connector table. connector_found has following meaning: + * 0 -- nothing found, + * 1 -- only PortInfo[0] filled, + * 2 -- only PortInfo[1] filled, + * 3 -- both are filled. + */ + int connector_found = 0; + if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x50))) { for (i = 1; i < 4; i++) { if (!RADEON_BIOS8(tmp + i*2) && i > 1) break; /* end of table */ tmp0 = RADEON_BIOS16(tmp + i*2); - if (((tmp0 >> 12) & 0x1f) == 0) continue; /* no connector */ + if (((tmp0 >> 12) & 0x0f) == 0) continue; /* no connector */ + if (connector_found > 0) { + if (pRADEONEnt->PortInfo[tmp1].DDCType == ((tmp0 >> 8) & 0x0f)) + continue; /* same connector */ + } /* internal DDC_DVI port will get assigned to PortInfo[0], or if there is no DDC_DVI (like in some IGPs). */ tmp1 = ((((tmp0 >> 8) & 0xf) == DDC_DVI) || (tmp1 == 1)) ? 0 : 1; /* determine port info index */ @@ -222,9 +237,7 @@ pRADEONEnt->PortInfo[tmp1].TMDSType == TMDS_INT) pRADEONEnt->PortInfo[tmp1].TMDSType = TMDS_UNKNOWN; - xf86DrvMsg(0, X_INFO, "Connector%d: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", - tmp1, pRADEONEnt->PortInfo[tmp1].DDCType, pRADEONEnt->PortInfo[tmp1].DACType, - pRADEONEnt->PortInfo[tmp1].TMDSType, pRADEONEnt->PortInfo[tmp1].ConnectorType); + connector_found += (tmp1 + 1); } } else { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No Connector Info Table found!\n"); @@ -232,14 +245,54 @@ } if (info->IsMobility) { - if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x42))) { - if ((tmp0 = RADEON_BIOS16(tmp + 0x15))) { - if ((tmp1 = RADEON_BIOS8(tmp0+2) & 0x07)) { - pRADEONEnt->PortInfo[0].DDCType = tmp1; - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "LCD DDC Info Table found!\n"); - } + /* For the cases where only one VGA connector is found, + we assume LVDS is not listed in the connector table, + add it in here as the first port. + */ + if ((connector_found < 3) && (pRADEONEnt->PortInfo[tmp1].ConnectorType == CONNECTOR_CRT)) { + if (connector_found == 1) { + memcpy (&pRADEONEnt->PortInfo[1], &pRADEONEnt->PortInfo[0], + sizeof (pRADEONEnt->PortInfo[0])); + } + pRADEONEnt->PortInfo[0].DACType = DAC_TVDAC; + pRADEONEnt->PortInfo[0].TMDSType = TMDS_UNKNOWN; + pRADEONEnt->PortInfo[0].DDCType = DDC_NONE_DETECTED; + pRADEONEnt->PortInfo[0].ConnectorType = CONNECTOR_PROPRIETARY; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "LVDS port is not in connector table, added in.\n"); + if (connector_found == 0) connector_found = 1; + else connector_found = 3; } - } + + if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x42))) { + if ((tmp0 = RADEON_BIOS16(tmp + 0x15))) { + if ((tmp1 = RADEON_BIOS8(tmp0+2) & 0x07)) { + pRADEONEnt->PortInfo[0].DDCType = tmp1; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "LCD DDC Info Table found!\n"); + } + } + } + } else if (connector_found == 2) { + memcpy (&pRADEONEnt->PortInfo[0], &pRADEONEnt->PortInfo[1], + sizeof (pRADEONEnt->PortInfo[0])); + pRADEONEnt->PortInfo[1].DACType = DAC_UNKNOWN; + pRADEONEnt->PortInfo[1].TMDSType = TMDS_UNKNOWN; + pRADEONEnt->PortInfo[1].DDCType = DDC_NONE_DETECTED; + pRADEONEnt->PortInfo[1].ConnectorType = CONNECTOR_NONE; + connector_found = 1; + } + + if (connector_found == 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No connector found in Connector Info Table.\n"); + } else { + xf86DrvMsg(0, X_INFO, "Connector0: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", + pRADEONEnt->PortInfo[0].DDCType, pRADEONEnt->PortInfo[0].DACType, + pRADEONEnt->PortInfo[0].TMDSType, pRADEONEnt->PortInfo[0].ConnectorType); + } + if (connector_found == 3) { + xf86DrvMsg(0, X_INFO, "Connector1: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", + pRADEONEnt->PortInfo[1].DDCType, pRADEONEnt->PortInfo[1].DACType, + pRADEONEnt->PortInfo[1].TMDSType, pRADEONEnt->PortInfo[1].ConnectorType); } #if 0 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-08-25 02:30:41.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-12-17 01:13:18.000000000 +0100 @@ -365,6 +365,7 @@ "xf86InitInt10", "xf86FreeInt10", "xf86int10Addr", + "xf86ExecX86int10", NULL }; @@ -1311,7 +1312,7 @@ info->PanelYRes = (INREG(RADEON_CRTC_V_TOTAL_DISP)>>16) + 1; } if (fp_horz_stretch & RADEON_HORZ_STRETCH_ENABLE) { - info->PanelXRes = ((fp_vert_stretch>>16) + 1) * 8; + info->PanelXRes = ((fp_horz_stretch>>16) + 1) * 8; } else { info->PanelXRes = ((INREG(RADEON_CRTC_H_TOTAL_DISP)>>16) + 1) * 8; } @@ -1712,6 +1713,13 @@ break; } } + for (i = 0; i < max_mt; i++) { + if (strcmp(s2, MonTypeName[i]) == 0) { + pRADEONEnt->PortInfo[1].MonType = MonTypeID[i]; + break; + } + } + if (i == max_mt) xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Invalid Monitor type specified for 2nd port \n"); @@ -1744,32 +1752,45 @@ } - if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN || pRADEONEnt->PortInfo[1].MonType == MT_UNKNOWN) { - - if(((!info->HasCRTC2) || info->IsDellServer) && - (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN)) { + if(((!info->HasCRTC2) || info->IsDellServer)) { + if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN) { if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_DVI, &pRADEONEnt->PortInfo[0]))); else if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_VGA, &pRADEONEnt->PortInfo[0]))); else if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_CRT2, &pRADEONEnt->PortInfo[0]))); else pRADEONEnt->PortInfo[0].MonType = MT_CRT; + } - if (!ignore_edid) { - if (pRADEONEnt->PortInfo[0].MonInfo) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitor1 EDID data ---------------------------\n"); - xf86PrintEDID(pRADEONEnt->PortInfo[0].MonInfo ); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "End of Monitor1 EDID data --------------------\n"); - } + if (!ignore_edid) { + if (pRADEONEnt->PortInfo[0].MonInfo) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitor1 EDID data ---------------------------\n"); + xf86PrintEDID(pRADEONEnt->PortInfo[0].MonInfo ); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "End of Monitor1 EDID data --------------------\n"); } - - pRADEONEnt->MonType1 = pRADEONEnt->PortInfo[0].MonType; - pRADEONEnt->MonInfo1 = pRADEONEnt->PortInfo[0].MonInfo; - pRADEONEnt->MonType2 = MT_NONE; - pRADEONEnt->MonInfo2 = NULL; - info->MergeType = MT_NONE; - return TRUE; } + pRADEONEnt->MonType1 = pRADEONEnt->PortInfo[0].MonType; + pRADEONEnt->MonInfo1 = pRADEONEnt->PortInfo[0].MonInfo; + pRADEONEnt->MonType2 = MT_NONE; + pRADEONEnt->MonInfo2 = NULL; + info->MergeType = MT_NONE; + info->DisplayType = pRADEONEnt->MonType1; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Primary:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", + MonTypeName[pRADEONEnt->PortInfo[0].MonType+1], + info->IsAtomBios ? + ConnectorTypeNameATOM[pRADEONEnt->PortInfo[0].ConnectorType]: + ConnectorTypeName[pRADEONEnt->PortInfo[0].ConnectorType], + DACTypeName[pRADEONEnt->PortInfo[0].DACType+1], + TMDSTypeName[pRADEONEnt->PortInfo[0].TMDSType+1], + DDCTypeName[pRADEONEnt->PortInfo[0].DDCType]); + + return TRUE; + } + + if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN || pRADEONEnt->PortInfo[1].MonType == MT_UNKNOWN) { + /* Primary Head (DVI or Laptop Int. panel)*/ /* A ddc capable display connected on DVI port */ if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN) { @@ -2583,8 +2604,10 @@ if (ddc->det_mon[j].type == 0) { struct detailed_timings *d_timings = &ddc->det_mon[j].section.d_timings; - if (info->PanelXRes < d_timings->h_active && - info->PanelYRes < d_timings->v_active) { + if (info->PanelXRes <= d_timings->h_active && + info->PanelYRes <= d_timings->v_active) { + + if (info->DotClock) continue; /* Timings already inited */ info->PanelXRes = d_timings->h_active; info->PanelYRes = d_timings->v_active; @@ -3157,8 +3180,9 @@ new->next = NULL; new->prev = last; - last->next = new; + if (last) last->next = new; last = new; + if (!first) first = new; } } } @@ -4471,10 +4495,12 @@ RADEONSave(pScrn); - if (xf86ReturnOptValBool(info->Options, OPTION_DYNAMIC_CLOCKS, FALSE)) { - RADEONSetDynamicClock(pScrn, 1); - } else { - RADEONSetDynamicClock(pScrn, 0); + if ((!info->IsSecondary) && info->IsMobility) { + if (xf86ReturnOptValBool(info->Options, OPTION_DYNAMIC_CLOCKS, FALSE)) { + RADEONSetDynamicClock(pScrn, 1); + } else { + RADEONSetDynamicClock(pScrn, 0); + } } if (info->FBDev) { @@ -7133,6 +7159,7 @@ RADEONDoAdjustFrame(pScrn, x, y, FALSE); } + RADEONSetFBLocation (pScrn); #ifdef XF86DRI if (info->CPStarted) DRIUnlock(pScrn->pScreen); #endif @@ -7145,9 +7172,22 @@ { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; RADEONTRACE(("RADEONEnterVT\n")); + if (INREG(RADEON_CONFIG_MEMSIZE) == 0) { /* Softboot V_BIOS */ + xf86Int10InfoPtr pInt; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n"); + pInt = xf86InitInt10 (info->pEnt->index); + if (pInt) { + pInt->num = 0xe6; + xf86ExecX86int10 (pInt); + xf86FreeInt10 (pInt); + } + } + if (info->FBDev) { unsigned char *RADEONMMIO = info->MMIO; if (!fbdevHWEnterVT(scrnIndex,flags)) return FALSE; @@ -7158,6 +7198,8 @@ } else if (!RADEONModeInit(pScrn, pScrn->currentMode)) return FALSE; + RADEONSetFBLocation (pScrn); + #ifdef XF86DRI if (info->directRenderingEnabled) { /* get the Radeon back into shape after resume */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h --- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h 2004-08-10 00:37:22.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h 2004-12-17 01:13:18.000000000 +0100 @@ -803,7 +803,7 @@ # define RADEON_MC_MCLK_MAX_DYN_STOP_LAT (1<<12) # define RADEON_IO_MCLK_MAX_DYN_STOP_LAT (1<<13) # define RADEON_MC_MCLK_DYN_ENABLE (1 << 14) -# define RADEON_IO_MCLK_DYN_ENABLE (1 << 14) +# define RADEON_IO_MCLK_DYN_ENABLE (1 << 15) #define RADEON_MDGPIO_A_REG 0x01ac #define RADEON_MDGPIO_EN_REG 0x01b0 #define RADEON_MDGPIO_MASK 0x0198 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c --- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c 2004-08-30 06:31:50.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_render.c 2005-01-25 04:20:12.000000000 +0100 @@ -7,6 +7,11 @@ #ifndef RENDER_GENERIC_HELPER #define RENDER_GENERIC_HELPER +/* R100 code path constants */ +/* Minimum working values for RV200: 65x8 - your mileage may vary */ +#define MAGIC_R100_MIN_TEX_WIDTH (65) +#define MAGIC_R100_MIN_TEX_HEIGHT (8) + static void RadeonInit3DEngineMMIO(ScrnInfoPtr pScrn); #ifdef XF86DRI static void RadeonInit3DEngineCP(ScrnInfoPtr pScrn); @@ -421,6 +426,8 @@ CARD8 *dst; CARD32 tex_size = 0, txformat; int dst_pitch, offset, size, i, tex_bytepp; + int offscreensize = (pScrn->bitsPerPixel >> 3) * + pScrn->displayWidth * MAGIC_R100_MIN_TEX_HEIGHT; ACCEL_PREAMBLE(); if ((width > 2048) || (height > 2048)) @@ -440,7 +447,8 @@ dst_pitch = (width * tex_bytepp + 31) & ~31; size = dst_pitch * height; - if (!AllocateLinear(pScrn, size)) + /* Allocate off-screen space for texture pre-rendering as well */ + if (!AllocateLinear(pScrn, size + offscreensize)) return FALSE; if (flags & XAA_RENDER_REPEAT) { @@ -451,7 +459,7 @@ txformat |= RADEON_TXFORMAT_NON_POWER2; } - offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8; + offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8 + offscreensize; /* Upload texture to card. Should use ImageWrite to avoid syncing. */ i = height; @@ -481,6 +489,7 @@ RADEON_CLAMP_S_WRAP | RADEON_CLAMP_T_WRAP); FINISH_ACCEL(); + info->RenderTexValidR100 = FALSE; return TRUE; } @@ -608,6 +617,95 @@ ACCEL_PREAMBLE(); + /* R100 chips seem to have cache problems and do not reload small textures + * from memory for small render areas. Thus we have to render a + * 'sufficiently large' portion of the texture (may contain uninitialized + * data as well) to off-screen memory to invalidate the cache. */ + if (!info->RenderTexValidR100 && + width*height < MAGIC_R100_MIN_TEX_WIDTH*MAGIC_R100_MIN_TEX_HEIGHT) +/* (width<MAGIC_R100_MIN_TEX_WIDTH || height<MAGIC_R100_MIN_TEX_HEIGHT))*/ + { + fboffset = info->fbLocation + pScrn->fbOffset + + info->RenderTex->offset * (pScrn->bitsPerPixel >> 3); + l = 0.0; + t = 0.0; + r = MAGIC_R100_MIN_TEX_WIDTH; + b = MAGIC_R100_MIN_TEX_HEIGHT; + +#ifdef ACCEL_CP + BEGIN_RING(23); + + OUT_ACCEL_REG(RADEON_RB3D_COLOROFFSET, fboffset); + + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD, 17)); + /* RADEON_SE_VTX_FMT */ + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0); + /* SE_VF_CNTL */ + OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + RADEON_CP_VC_CNTL_MAOS_ENABLE | + RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + + OUT_RING(F_TO_DW(l)); + OUT_RING(F_TO_DW(t)); + OUT_RING(F_TO_DW(l)); + OUT_RING(F_TO_DW(t)); + + OUT_RING(F_TO_DW(r)); + OUT_RING(F_TO_DW(t)); + OUT_RING(F_TO_DW(r)); + OUT_RING(F_TO_DW(t)); + + OUT_RING(F_TO_DW(r)); + OUT_RING(F_TO_DW(b)); + OUT_RING(F_TO_DW(r)); + OUT_RING(F_TO_DW(b)); + + OUT_RING(F_TO_DW(l)); + OUT_RING(F_TO_DW(b)); + OUT_RING(F_TO_DW(l)); + OUT_RING(F_TO_DW(b)); + + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + + ADVANCE_RING(); +#else + BEGIN_ACCEL(19); + + OUT_ACCEL_REG(RADEON_RB3D_COLOROFFSET, fboffset); + + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, RADEON_VF_PRIM_TYPE_TRIANGLE_FAN | + RADEON_VF_PRIM_WALK_DATA | + RADEON_VF_RADEON_MODE | + (4 << RADEON_VF_NUM_VERTICES_SHIFT)); + + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(l)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(t)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(l)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(t)); + + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(r)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(t)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(r)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(t)); + + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(r)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(b)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(r)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(b)); + + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(l)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(b)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(l)); + OUT_ACCEL_REG(RADEON_SE_PORT_DATA0, F_TO_DW(b)); + + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); + FINISH_ACCEL(); +#endif + } + /* Note: we can't simply set up the 3D surface at the same location as the * front buffer, because the 2048x2048 limit on coordinates may be smaller * than the (MergedFB) screen. @@ -696,6 +794,7 @@ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); FINISH_ACCEL(); #endif + info->RenderTexValidR100 = TRUE; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/chips/chips.man x11r682/xc/programs/Xserver/hw/xfree86/drivers/chips/chips.man --- xc/programs/Xserver/hw/xfree86/drivers/chips/chips.man 2004-04-23 21:27:21.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/chips/chips.man 2005-01-24 03:38:14.000000000 +0100 @@ -205,6 +205,17 @@ off by default. Using this option forces the use of an independent refresh rate on the two screens. Default: off. +.TP +.BI "Option \*qFpMode\*q \*q" boolean \*q +The driver probes the chip to find out if a flat panel (LCD) is connected +and active. If this is true it limits the possible screen size to the maximum +resolution of the panel. The chips is initialized by the BIOS which may +set the chip to 'dual' mode even if no panel is connected. In this case +the available resolution on the CRT is limited to the panel size +the BIOS has set. To tell the driver that no panel is connected despite +of what the BIOS is saying set this option to off. Don't set it to off +if a panel is connected. +Default: value probed by BIOS. .SH "SEE ALSO" __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) .PP diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/common.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/common.h --- xc/programs/Xserver/hw/xfree86/drivers/i810/common.h 2004-06-22 16:28:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/common.h 2004-12-15 10:35:23.000000000 +0100 @@ -173,7 +173,7 @@ #define BEGIN_LP_RING(n) \ unsigned int outring, ringmask; \ volatile unsigned char *virt; \ - unsigned int needed; \ + int needed; \ if ((n) & 1) \ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \ @@ -206,7 +206,7 @@ #define BEGIN_LP_RING(n) \ unsigned int outring, ringmask; \ volatile unsigned char *virt; \ - unsigned int needed; \ + int needed; \ if ((n) & 1) \ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h 2004-06-22 16:28:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h 2004-12-15 10:35:23.000000000 +0100 @@ -172,7 +172,7 @@ unsigned long OverlayPhysical; unsigned long OverlayStart; int colorKey; - int surfaceAllocation[I810_TOTAL_SURFACES]; + unsigned int surfaceAllocation[I810_TOTAL_SURFACES]; int numSurfaces; DGAModePtr DGAModes; @@ -295,9 +295,10 @@ extern void I810Sync(ScrnInfoPtr pScrn); extern unsigned long I810LocalToPhysical(ScrnInfoPtr pScrn, unsigned long local); -extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size); +extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, + int size); extern int I810AllocHigh(I810MemRange * result, I810MemRange * pool, - int size); + int size); extern Bool I810AllocateFront(ScrnInfoPtr pScrn); extern int I810AllocateGARTMemory(ScrnInfoPtr pScrn); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 2004-07-30 22:30:52.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 2004-12-15 10:35:23.000000000 +0100 @@ -259,7 +259,7 @@ #ifdef XF86DRI /* VT switching tries to do this. */ - if (!pI810->LockHeld && pI810->directRenderingEnabled) { + if ((!pI810->LockHeld && pI810->directRenderingEnabled) || !pScrn->vtSema) { return; } #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 2004-06-22 16:28:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 2005-01-25 01:22:23.000000000 +0100 @@ -290,7 +290,7 @@ unsigned long dcacheHandle; int sysmem_size = 0; int back_size = 0; - int pitch_idx = 0; + unsigned int pitch_idx = 0; int bufs; int width = pScrn->displayWidth * pI810->cpp; int i; @@ -1497,6 +1497,11 @@ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"%s\n",strerror(errno)); return FALSE; } + if (pI810->cursorARGBHandle != 0) + if (drmAgpUnbind(pI810->drmSubFD, pI810->cursorARGBHandle) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"%s\n",strerror(errno)); + return FALSE; + } if (pI810->agpAcquired == TRUE) drmAgpRelease(pI810->drmSubFD); pI810->agpAcquired = FALSE; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 2004-08-25 02:30:41.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 2004-12-15 10:35:23.000000000 +0100 @@ -1124,14 +1124,6 @@ xf86SetOperatingState(resVgaIo, pI810->pEnt->index, ResUnusedOpr); xf86SetOperatingState(resVgaMem, pI810->pEnt->index, ResDisableOpr); - pI810->LpRing = xalloc(sizeof(I810RingBuffer)); - if (!pI810->LpRing) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Could not allocate lpring data structure.\n"); - I810FreeRec(pScrn); - return FALSE; - } - return TRUE; } @@ -1159,7 +1151,7 @@ I810MapMem(ScrnInfoPtr pScrn) { I810Ptr pI810 = I810PTR(pScrn); - unsigned i; + long i; for (i = 2; i < pI810->FbMapSize; i <<= 1) ; pI810->FbMapSize = i; @@ -2074,6 +2066,13 @@ pI810 = I810PTR(pScrn); hwp = VGAHWPTR(pScrn); + pI810->LpRing = xcalloc(sizeof(I810RingBuffer),1); + if (!pI810->LpRing) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Could not allocate lpring data structure.\n"); + return FALSE; + } + miClearVisualTypes(); /* Re-implemented Direct Color support, -jens */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 2004-08-30 05:19:08.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 2004-12-15 10:35:23.000000000 +0100 @@ -55,7 +55,7 @@ int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size) { - if (size > pool->Size) + if (size > (long)pool->Size) return 0; pool->Size -= size; @@ -69,7 +69,7 @@ int I810AllocHigh(I810MemRange * result, I810MemRange * pool, int size) { - if (size > pool->Size) + if (size > (long)pool->Size) return 0; pool->Size -= size; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h --- xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 2004-06-22 16:28:46.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 2004-12-15 10:35:23.000000000 +0100 @@ -459,11 +459,11 @@ #define I830_HEAD_MASK 0x001FFFFC #define RING_START 0x08 -#define START_ADDR 0x00FFFFF8 +#define START_ADDR 0x03FFFFF8 #define I830_RING_START_MASK 0xFFFFF000 #define RING_LEN 0x0C -#define RING_NR_PAGES 0x000FF000 +#define RING_NR_PAGES 0x001FF000 #define I830_RING_NR_PAGES 0x001FF000 #define RING_REPORT_MASK 0x00000006 #define RING_REPORT_64K 0x00000002 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h --- xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h 2004-07-06 16:37:47.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h 2004-12-15 10:35:23.000000000 +0100 @@ -180,17 +180,17 @@ int CacheLines; /* These are set in PreInit and never changed. */ - unsigned long FbMapSize; - unsigned long TotalVideoRam; + long FbMapSize; + long TotalVideoRam; I830MemRange StolenMemory; /* pre-allocated memory */ - unsigned long BIOSMemorySize; /* min stolen pool size */ + long BIOSMemorySize; /* min stolen pool size */ int BIOSMemSizeLoc; /* These change according to what has been allocated. */ long FreeMemory; I830MemRange MemoryAperture; I830MemPool StolenPool; - unsigned long allocatedMemory; + long allocatedMemory; /* Regions allocated either from the above pools, or from agpgart. */ /* for single and dual head configurations */ @@ -348,7 +348,7 @@ int xoffset; int yoffset; - int SaveGeneration; + unsigned int SaveGeneration; Bool vbeRestoreWorkaround; Bool displayInfo; Bool devicePresence; @@ -415,7 +415,7 @@ extern Bool I830BindGARTMemory(ScrnInfoPtr pScrn); extern Bool I830UnbindGARTMemory(ScrnInfoPtr pScrn); extern unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, - I830MemPool *pool, unsigned long size, + I830MemPool *pool, long size, unsigned long alignment, int flags); extern void I830PrintAllRegisters(I830RegPtr i830Reg); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 2004-07-30 22:38:27.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 2004-12-15 10:35:23.000000000 +0100 @@ -594,6 +594,7 @@ I830Ptr pI830 = I830PTR(pScrn); vbeInfoPtr pVbe = pI830->pVbe; CARD32 temp; + #ifdef I915G_WORKAROUND int getmode; int mode; @@ -1018,7 +1019,7 @@ I830MapMem(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - unsigned i; + long i; for (i = 2; i < pI830->FbMapSize; i <<= 1) ; pI830->FbMapSize = i; @@ -2898,7 +2899,7 @@ OUTREG(LP_RING + RING_TAIL, 0); OUTREG(LP_RING + RING_HEAD, 0); - if ((pI830->LpRing->mem.Start & I830_RING_START_MASK) != + if ((long)(pI830->LpRing->mem.Start & I830_RING_START_MASK) != pI830->LpRing->mem.Start) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "I830SetRingRegs: Ring buffer start (%lx) violates its " @@ -3441,7 +3442,7 @@ I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); temp = INREG(stridereg); - if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) { + if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe), (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth); @@ -3459,7 +3460,7 @@ sizereg = pI830->pipe ? DSPASIZE : DSPBSIZE; temp = INREG(stridereg); - if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) { + if (temp / pI8302->cpp != (CARD32)(pI830->entityPrivate->pScrn_2->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe), (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth); @@ -3478,7 +3479,7 @@ I830Ptr pI8302 = I830PTR(pI830->entityPrivate->pScrn_2); temp = INREG(stridereg); - if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) { + if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe), (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth); @@ -3494,7 +3495,7 @@ sizereg = !pI830->pipe ? DSPASIZE : DSPBSIZE; temp = INREG(stridereg); - if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) { + if (temp / pI8302->cpp != ((CARD32)pI830->entityPrivate->pScrn_2->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe), (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth); @@ -3515,7 +3516,7 @@ continue; temp = INREG(stridereg); - if (temp / pI830->cpp != pScrn->displayWidth) { + if (temp / pI830->cpp != (CARD32)pScrn->displayWidth) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(i), (int)(temp / pI830->cpp), pScrn->displayWidth); @@ -4354,6 +4355,9 @@ SaveHWOperatingState(pScrn); #endif + ResetState(pScrn, TRUE); + RestoreHWState(pScrn); + if (IsPrimary(pScrn)) { if (!SetDisplayDevices(pScrn, pI830->savedDevices)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, @@ -4365,8 +4369,6 @@ } } - ResetState(pScrn, TRUE); - RestoreHWState(pScrn); RestoreBIOSMemSize(pScrn); if (IsPrimary(pScrn)) I830UnbindGARTMemory(pScrn); @@ -4506,7 +4508,8 @@ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); Bool on = xf86IsUnblank(mode); - CARD32 temp, ctrl, base, i; + CARD32 temp, ctrl, base; + int i; DPRINTF(PFX, "I830BIOSSaveScreen: %d, on is %s\n", mode, BOOLTOSTRING(on)); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 2004-07-06 16:37:47.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 2004-12-15 10:35:23.000000000 +0100 @@ -63,10 +63,10 @@ */ static unsigned long AllocFromPool(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool, - unsigned long size, unsigned long alignment, int flags) + long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long needed, start, end; + long needed, start, end; Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); if (!result || !pool || !size) @@ -94,7 +94,7 @@ } } if (needed > pool->Free.Size) { - unsigned long extra; + long extra; /* See if the pool can be grown. */ if (pI830->StolenOnly && !dryrun) return 0; @@ -107,7 +107,7 @@ return 0; } - if (!dryrun && (extra > pI830->MemoryAperture.Size)) + if (!dryrun && ((long)extra > pI830->MemoryAperture.Size)) return 0; pool->Free.Size += extra; @@ -136,7 +136,7 @@ } static unsigned long -AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, unsigned long size, +AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); @@ -212,7 +212,7 @@ unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool, - unsigned long size, unsigned long alignment, int flags) + long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); @@ -392,7 +392,7 @@ I830Allocate2DMemory(ScrnInfoPtr pScrn, const int flags) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long size, alloced; + long size, alloced; Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); int verbosity = dryrun ? 4 : 1; const char *s = dryrun ? "[dryrun] " : ""; @@ -610,9 +610,9 @@ return FALSE; } } else { - unsigned long lineSize; - unsigned long extra = 0; - unsigned long maxFb = 0; + long lineSize; + long extra = 0; + long maxFb = 0; /* * XXX Need to "free" up any 3D allocations if the DRI ended up @@ -857,7 +857,7 @@ I830GetExcessMemoryAllocations(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long allocated; + long allocated; allocated = pI830->StolenPool.Total.Size + pI830->allocatedMemory; if (allocated > pI830->TotalVideoRam) @@ -1367,7 +1367,7 @@ I830Ptr pI830 = I830PTR(pScrn); int pitch, ntiles, i; static int nextTile = 0; - static int tileGeneration = -1; + static unsigned int tileGeneration = -1; #if 0 /* Hack to "improve" the alignment of the front buffer. diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c --- xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c 2004-08-26 07:10:56.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/i810/i830_video.c 2005-01-13 00:22:41.000000000 +0100 @@ -632,7 +632,7 @@ pPriv->gamma0 = 0x080808; /* gotta uninit this someplace */ - REGION_INIT(pScreen, &pPriv->clip, NullBox, 0); + REGION_NULL(pScreen, &pPriv->clip); pI830->adaptor = adapt; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx1_video.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx1_video.c --- xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx1_video.c 2004-04-23 21:40:15.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx1_video.c 2004-12-16 02:30:36.000000000 +0100 @@ -240,45 +240,42 @@ GeodePtr pGeode; ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum]; + XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; + XF86VideoAdaptorPtr newAdaptor = NULL; + + int num_adaptors; pGeode = GEODEPTR(pScreenInfo); - if (!pGeode->NoAccel) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; - XF86VideoAdaptorPtr newAdaptor = NULL; - - int num_adaptors; - - DEBUGMSG(0, (0, X_NONE, "InitVideo\n")); - newAdaptor = GX1SetupImageVideo(pScreen); - GX1InitOffscreenImages(pScreen); - - num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors); - - if (newAdaptor) { - if (!num_adaptors) { - num_adaptors = 1; - adaptors = &newAdaptor; - } else { - newAdaptors = /* need to free this someplace */ - xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *)); - if (newAdaptors) { + + DEBUGMSG(0, (0, X_NONE, "InitVideo\n")); + newAdaptor = GX1SetupImageVideo(pScreen); + GX1InitOffscreenImages(pScreen); + + num_adaptors = xf86XVListGenericAdaptors(pScreenInfo, &adaptors); + + if (newAdaptor) { + if (!num_adaptors) { + num_adaptors = 1; + adaptors = &newAdaptor; + } else { + newAdaptors = /* need to free this someplace */ + xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *)); + if (newAdaptors) { memcpy(newAdaptors, adaptors, num_adaptors * sizeof(XF86VideoAdaptorPtr)); newAdaptors[num_adaptors] = newAdaptor; adaptors = newAdaptors; num_adaptors++; - } - } - } - - if (num_adaptors) - xf86XVScreenInit(pScreen, adaptors, num_adaptors); - - if (newAdaptors) - xfree(newAdaptors); + } + } } + + if (num_adaptors) + xf86XVScreenInit(pScreen, adaptors, num_adaptors); + + if (newAdaptors) + xfree(newAdaptors); } /* client libraries expect an encoding */ @@ -413,17 +410,15 @@ void GX1ResetVideo(ScrnInfoPtr pScrn) { - GeodePtr pGeode = GEODEPTR(pScrn); + GeodePtr pGeode = GEODEPTR(pScrn); - if (!pGeode->NoAccel) { - GeodePortPrivPtr pPriv = pGeode->adaptor->pPortPrivates[0].ptr; + GeodePortPrivPtr pPriv = pGeode->adaptor->pPortPrivates[0].ptr; - DEBUGMSG(0, (0, X_NONE, "ResetVideo\n")); - GX1AccelSync(pScrn); - GFX(set_video_palette(NULL)); - GX1SetColorkey(pScrn, pPriv); - GFX(set_video_filter(pPriv->filter, pPriv->filter)); - } + DEBUGMSG(0, (0, X_NONE, "ResetVideo\n")); + if (!pGeode->NoAccel) GX1AccelSync(pScrn); + GFX(set_video_palette(NULL)); + GX1SetColorkey(pScrn, pPriv); + GFX(set_video_filter(pPriv->filter, pPriv->filter)); } /*---------------------------------------------------------------------------- @@ -537,7 +532,7 @@ DEBUGMSG(0, (0, X_NONE, "StopVideo\n")); REGION_EMPTY(pScrn->pScreen, &pPriv->clip); - GX1AccelSync(pScrn); + if (!pGeode->NoAccel) GX1AccelSync(pScrn); if (exit) { if (pPriv->videoStatus & CLIENT_VIDEO_ON) { GFX(set_video_enable(0)); @@ -580,8 +575,9 @@ Atom attribute, INT32 value, pointer data) { GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data; + GeodePtr pGeode = GEODEPTR(pScrn); - GX1AccelSync(pScrn); + if (!pGeode->NoAccel) GX1AccelSync(pScrn); if (attribute == xvColorKey) { pPriv->colorKey = value; GX1SetColorkey(pScrn, pPriv); @@ -1002,7 +998,7 @@ GeodePtr pGeode = GEODEPTR(pScrn); /* DisplayModePtr mode = pScrn->currentMode; */ - GX1AccelSync(pScrn); + if (!pGeode->NoAccel) GX1AccelSync(pScrn); GFX(set_video_enable(1)); @@ -1353,7 +1349,7 @@ (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask); pScreen->BlockHandler = GX1BlockHandler; - GX1AccelSync(pScrn); + if (!pGeode->NoAccel) GX1AccelSync(pScrn); if (pPriv->videoStatus & TIMER_MASK) { UpdateCurrentTime(); if (pPriv->videoStatus & OFF_TIMER) { diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx2_video.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx2_video.c --- xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx2_video.c 2004-04-23 21:40:15.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_gx2_video.c 2004-12-16 02:30:36.000000000 +0100 @@ -233,46 +233,42 @@ void GX2InitVideo(ScreenPtr pScreen) { - GeodePtr pGeode; - ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum]; + GeodePtr pGeode; + ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum]; + XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; + XF86VideoAdaptorPtr newAdaptor = NULL; - pGeode = GEODEPTR(pScreenInfo); + int num_adaptors; - if (!pGeode->NoAccel) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL; - XF86VideoAdaptorPtr newAdaptor = NULL; + pGeode = GEODEPTR(pScreenInfo); - int num_adaptors; + newAdaptor = GX2SetupImageVideo(pScreen); + GX2InitOffscreenImages(pScreen); - newAdaptor = GX2SetupImageVideo(pScreen); - GX2InitOffscreenImages(pScreen); + num_adaptors = xf86XVListGenericAdaptors(pScreenInfo, &adaptors); - num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors); - - if (newAdaptor) { - if (!num_adaptors) { + if (newAdaptor) { + if (!num_adaptors) { num_adaptors = 1; adaptors = &newAdaptor; - } else { + } else { newAdaptors = /* need to free this someplace */ - xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *)); + xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *)); if (newAdaptors) { - memcpy(newAdaptors, adaptors, num_adaptors * - sizeof(XF86VideoAdaptorPtr)); - newAdaptors[num_adaptors] = newAdaptor; - adaptors = newAdaptors; - num_adaptors++; + memcpy(newAdaptors, adaptors, num_adaptors * + sizeof(XF86VideoAdaptorPtr)); + newAdaptors[num_adaptors] = newAdaptor; + adaptors = newAdaptors; + num_adaptors++; } - } - } + } + } - if (num_adaptors) - xf86XVScreenInit(pScreen, adaptors, num_adaptors); + if (num_adaptors) + xf86XVScreenInit(pScreen, adaptors, num_adaptors); - if (newAdaptors) - xfree(newAdaptors); - } + if (newAdaptors) + xfree(newAdaptors); } /* client libraries expect an encoding */ @@ -416,16 +412,14 @@ void GX2ResetVideo(ScrnInfoPtr pScrn) { - GeodePtr pGeode = GEODEPTR(pScrn); + GeodePtr pGeode = GEODEPTR(pScrn); - if (!pGeode->NoAccel) { - GeodePortPrivPtr pPriv = pGeode->adaptor->pPortPrivates[0].ptr; + GeodePortPrivPtr pPriv = pGeode->adaptor->pPortPrivates[0].ptr; - GX2AccelSync(pScrn); - GFX(set_video_palette(NULL)); - GX2SetColorkey(pScrn, pPriv); - GFX(set_video_filter(pPriv->filter, pPriv->filter)); - } + if (!pGeode->NoAccel) GX2AccelSync(pScrn); + GFX(set_video_palette(NULL)); + GX2SetColorkey(pScrn, pPriv); + GFX(set_video_filter(pPriv->filter, pPriv->filter)); } /*---------------------------------------------------------------------------- @@ -537,7 +531,7 @@ REGION_EMPTY(pScrn->pScreen, &pPriv->clip); - GX2AccelSync(pScrn); + if (!pGeode->NoAccel) GX2AccelSync(pScrn); if (exit) { if (pPriv->videoStatus & CLIENT_VIDEO_ON) { GFX(set_video_enable(0)); @@ -580,8 +574,9 @@ Atom attribute, INT32 value, pointer data) { GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data; + GeodePtr pGeode = GEODEPTR(pScrn); - GX2AccelSync(pScrn); + if (!pGeode->NoAccel) GX2AccelSync(pScrn); if (attribute == xvColorKey) { pPriv->colorKey = value; GX2SetColorkey(pScrn, pPriv); @@ -941,7 +936,7 @@ { GeodePtr pGeode = GEODEPTR(pScrn); - GX2AccelSync(pScrn); + if (!pGeode->NoAccel) GX2AccelSync(pScrn); GFX(set_video_enable(1)); @@ -1298,7 +1293,7 @@ (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask); pScreen->BlockHandler = GX2BlockHandler; - GX2AccelSync(pScrn); + if (!pGeode->NoAccel) GX2AccelSync(pScrn); if (pPriv->videoStatus & TIMER_MASK) { UpdateCurrentTime(); if (pPriv->videoStatus & OFF_TIMER) { diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man 2004-11-14 19:13:27.000000000 +0100 @@ -1,4 +1,4 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.22 2003/10/18 01:14:26 mvojkovi Exp $ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.26 2004/10/15 20:32:21 mvojkovi Exp $ .\" shorthand for double quote that works everywhere. .ds q \N'34' .TH NV __drivermansuffix__ __vendorversion__ @@ -51,7 +51,7 @@ NV17, NV18, NV25, NV28 .TP 22 .B GeForce FX, QUADRO FX -NV30, NV31, NV34, NV35, NV36, NV38 +NV30, NV31, NV34, NV35, NV36, NV37, NV38, NV40, NV41, NV43, NV44, NV45 .SH CONFIGURATION DETAILS Please refer to __xconfigfile__(__filemansuffix__) for general configuration details. This section only covers configuration details specific to this @@ -102,6 +102,11 @@ nForce2, GeForce4, Quadro4, Geforce FX and Quadro FX. Default: off. .TP +.BI "Option \*qFPScale\*q \*q" boolean \*q +Supported only on GeForce4, Quadro4, Geforce FX and Quadro FX. This option +tells to the driver to scale lower resolutions up to the flat panel's native +resolution. Default: on. +.TP .BI "Option \*qRotate\*q \*qCW\*q" .TP .BI "Option \*qRotate\*q \*qCCW\*q" @@ -118,3 +123,37 @@ .SH AUTHORS Authors include: David McKay, Jarno Paananen, Chas Inman, Dave Schmenk, Mark Vojkovich +.SH COPYRIGHT +.LP +NOTICE TO USER: The source code is copyrighted under U.S. and +international laws. Users and possessors of this source code are +hereby granted a nonexclusive, royalty-free copyright license to +use this code in individual and commercial software. +.LP +Any use of this source code must include, in the user documentation and +internal comments to the code, notices to the end user as follows: +.LP +Copyright 1993-2003 NVIDIA, Corporation. All rights reserved. +.LP +NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY +OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" +WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPORATION +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL +NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, +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 SOURCE CODE. +.LP +U.S. Government End Users. This source code is a "commercial +item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), +consisting of "commercial computer software" and "commercial +computer software documentation," as such terms are used in +48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government +only as a commercial end item. Consistent with 48 C.F.R. +12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), +all U.S. Government End Users acquire the source code with only +those rights set forth herein. + diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c 2004-11-14 19:13:27.000000000 +0100 @@ -37,7 +37,7 @@ |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c,v 1.11 2002/11/26 23:41:58 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c,v 1.13 2004/03/13 22:07:05 mvojkovi Exp $ */ #include "nv_include.h" @@ -239,28 +239,37 @@ NVPtr pNv = NVPTR(pScrn); CARD32 *image = pCurs->bits->argb; CARD32 *dst = (CARD32*)pNv->CURSOR; + CARD32 alpha, tmp; int x, y, w, h; w = pCurs->bits->width; h = pCurs->bits->height; -#if X_BYTE_ORDER == X_BIG_ENDIAN - if((pNv->Chipset & 0x0ff0) == 0x0110) { - CARD32 tmp; - + if((pNv->Chipset & 0x0ff0) == 0x0110) { /* premultiply */ for(y = 0; y < h; y++) { for(x = 0; x < w; x++) { - tmp = *image++; - *dst++ = BYTE_SWAP_32(tmp); - } - for(; x < 64; x++) - *dst++ = 0; - } - } else + alpha = *image >> 24; + if(alpha == 0xff) + tmp = *image; + else { + tmp = (alpha << 24) | + (((*image & 0xff) * alpha) / 255) | + ((((*image & 0xff00) * alpha) / 255) & 0xff00) | + ((((*image & 0xff0000) * alpha) / 255) & 0xff0000); + } + image++; +#if X_BYTE_ORDER == X_BIG_ENDIAN + *dst++ = BYTE_SWAP_32(tmp); +#else + *dst++ = tmp; #endif - { + } + for(; x < 64; x++) + *dst++ = 0; + } + } else { for(y = 0; y < h; y++) { - for(x = 0; x < w; x++) + for(x = 0; x < w; x++) *dst++ = *image++; for(; x < 64; x++) *dst++ = 0; @@ -299,9 +308,7 @@ infoPtr->UseHWCursor = NVUseHWCursor; #ifdef ARGB_CURSOR - if(pNv->alphaCursor && - (((pNv->Chipset & 0x0ff0) != 0x0110) || !pNv->FPDither)) - { + if(pNv->alphaCursor) { infoPtr->UseHWCursorARGB = NVUseHWCursorARGB; infoPtr->LoadCursorARGB = NVLoadCursorARGB; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c 2004-12-16 02:42:35.000000000 +0100 @@ -37,10 +37,38 @@ |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c,v 1.37 2003/09/08 20:00:27 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c,v 1.44 2004/12/09 00:21:04 mvojkovi Exp $ */ #include "nv_include.h" +static int +NVDACPanelTweaks(NVPtr pNv, NVRegPtr state) +{ + int tweak = 0; + + if(pNv->usePanelTweak) { + tweak = pNv->PanelTweak; + } else { + /* begin flat panel hacks */ + /* This is unfortunate, but some chips need this register + tweaked or else you get artifacts where adjacent pixels are + swapped. There are no hard rules for what to set here so all + we can do is experiment and apply hacks. */ + + if(((pNv->Chipset & 0xffff) == 0x0328) && (state->bpp == 32)) { + /* At least one NV34 laptop needs this workaround. */ + tweak = -1; + } + + if((pNv->Chipset & 0xfff0) == 0x0310) { + tweak = 1; + } + /* end flat panel hacks */ + } + + return tweak; +} + Bool NVDACInit(ScrnInfoPtr pScrn, DisplayModePtr mode) { @@ -58,7 +86,6 @@ int vertBlankStart = mode->CrtcVDisplay - 1; int vertBlankEnd = mode->CrtcVTotal - 1; - NVPtr pNv = NVPTR(pScrn); NVRegPtr nvReg = &pNv->ModeReg; NVFBLayout *pLayout = &pNv->CurrentLayout; @@ -186,6 +213,8 @@ { nvReg->scale |= (1 << 8) ; } + nvReg->crtcSync = pNv->PRAMDAC[0x0828/4]; + nvReg->crtcSync += NVDACPanelTweaks(pNv, nvReg); } nvReg->vpll = nvReg->pll; @@ -193,6 +222,9 @@ nvReg->vpllB = nvReg->pllB; nvReg->vpll2B = nvReg->pllB; + VGA_WR08(pNv->PCIO, 0x03D4, 0x1C); + nvReg->fifo = VGA_RD08(pNv->PCIO, 0x03D5) & ~(1<<5); + if(pNv->CRTCnumber) { nvReg->head = pNv->PCRTC0[0x00000860/4] & ~0x00001000; nvReg->head2 = pNv->PCRTC0[0x00002860/4] | 0x00001000; @@ -215,29 +247,29 @@ if(mode->Flags & V_DBLSCAN) nvReg->cursorConfig |= (1 << 4); if(pNv->alphaCursor) { - nvReg->cursorConfig |= 0x04011000; + if((pNv->Chipset & 0x0ff0) != 0x0110) + nvReg->cursorConfig |= 0x04011000; + else + nvReg->cursorConfig |= 0x14011000; nvReg->general |= (1 << 29); + } else + nvReg->cursorConfig |= 0x02000000; + if(pNv->twoHeads) { if((pNv->Chipset & 0x0ff0) == 0x0110) { - nvReg->dither = pNv->PRAMDAC[0x0528/4] & ~0x00010000; - if(pNv->FPDither) - nvReg->dither |= 0x00010000; - else - nvReg->cursorConfig |= (1 << 28); - } else - if((pNv->Chipset & 0x0ff0) >= 0x0170) { + nvReg->dither = pNv->PRAMDAC[0x0528/4] & ~0x00010000; + if(pNv->FPDither) + nvReg->dither |= 0x00010000; + } else { nvReg->dither = pNv->PRAMDAC[0x083C/4] & ~1; - nvReg->cursorConfig |= (1 << 28); if(pNv->FPDither) nvReg->dither |= 1; - } else { - nvReg->cursorConfig |= (1 << 28); - } - } else - nvReg->cursorConfig |= 0x02000000; + } + } nvReg->timingH = 0; nvReg->timingV = 0; + nvReg->displayV = mode->CrtcVDisplay; return (TRUE); } @@ -250,8 +282,6 @@ int restore = VGA_SR_MODE; if(primary) restore |= VGA_SR_CMAP | VGA_SR_FONTS; - else if((pNv->Chipset & 0xffff) == 0x0018) - restore |= VGA_SR_CMAP; NVLoadStateExt(pNv, nvReg); #if defined(__powerpc__) restore &= ~VGA_SR_FONTS; @@ -274,8 +304,6 @@ saveFonts = FALSE; #endif - NVLockUnlock(pNv, 0); - vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE | (saveFonts? VGA_SR_FONTS : 0)); NVUnloadStateExt(pNv, nvReg); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h 2004-11-14 19:13:27.000000000 +0100 @@ -38,7 +38,7 @@ |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h,v 1.1 2003/07/31 20:24:29 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dma.h,v 1.4 2004/03/20 01:52:16 mvojkovi Exp $ */ #define SURFACE_FORMAT 0x00000300 #define SURFACE_FORMAT_DEPTH8 0x00000001 @@ -145,9 +145,15 @@ #define STRETCH_BLIT_FORMAT_DEPTH8 0x00000004 #define STRETCH_BLIT_FORMAT_DEPTH16 0x00000007 #define STRETCH_BLIT_FORMAT_DEPTH24 0x00000004 +#define STRETCH_BLIT_FORMAT_A8R8G8B8 0x00000003 #define STRETCH_BLIT_FORMAT_X8R8G8B8 0x00000004 #define STRETCH_BLIT_FORMAT_YUYV 0x00000005 #define STRETCH_BLIT_FORMAT_UYVY 0x00000006 +/* STRETCH_BLIT_OPERATION is only supported on TNT2 and newer */ +#define STRETCH_BLIT_OPERATION 0x0000E304 +#define STRETCH_BLIT_OPERATION_ROP 0x00000001 +#define STRETCH_BLIT_OPERATION_COPY 0x00000003 +#define STRETCH_BLIT_OPERATION_BLEND 0x00000002 #define STRETCH_BLIT_CLIP_POINT 0x0000E308 #define STRETCH_BLIT_CLIP_POINT_X 15:0 #define STRETCH_BLIT_CLIP_POINT_Y 31:16 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 2004-08-16 11:13:14.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 2004-12-16 02:42:35.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.5 2004/08/16 09:13:14 ajax Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.5.2.2 2004/12/16 01:42:35 gisburn Exp $ */ /* $XConsortium: nv_driver.c /main/3 1996/10/28 05:13:37 kaleb $ */ /* * Copyright 1996-1997 David J. McKay @@ -25,7 +25,7 @@ /* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen <jpaana@s2.org> */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.122 2004/01/10 22:31:53 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.130 2004/12/09 00:21:04 mvojkovi Exp $ */ #include "nv_include.h" @@ -113,18 +113,19 @@ { 0x10DE0175, "GeForce4 420 Go" }, { 0x10DE0176, "GeForce4 420 Go 32M" }, { 0x10DE0177, "GeForce4 460 Go" }, + { 0x10DE0178, "Quadro4 550 XGL" }, #if defined(__powerpc__) { 0x10DE0179, "GeForce4 MX (Mac)" }, #else { 0x10DE0179, "GeForce4 440 Go 64M" }, #endif - { 0x10DE017D, "GeForce4 410 Go 16M" }, - { 0x10DE017C, "Quadro4 500 GoGL" }, - { 0x10DE0178, "Quadro4 550 XGL" }, { 0x10DE017A, "Quadro4 NVS" }, + { 0x10DE017C, "Quadro4 500 GoGL" }, + { 0x10DE017D, "GeForce4 410 Go 16M" }, { 0x10DE0181, "GeForce4 MX 440 with AGP8X" }, { 0x10DE0182, "GeForce4 MX 440SE with AGP8X" }, { 0x10DE0183, "GeForce4 MX 420 with AGP8X" }, + { 0x10DE0185, "GeForce4 MX 4000" }, { 0x10DE0186, "GeForce4 448 Go" }, { 0x10DE0187, "GeForce4 488 Go" }, { 0x10DE0188, "Quadro4 580 XGL" }, @@ -133,6 +134,8 @@ #endif { 0x10DE018A, "Quadro4 280 NVS" }, { 0x10DE018B, "Quadro4 380 XGL" }, + { 0x10DE018C, "Quadro NVS 50 PCI" }, + { 0x10DE018D, "GeForce4 448 Go" }, { 0x10DE01F0, "GeForce4 MX Integrated GPU" }, { 0x10DE0200, "GeForce3" }, { 0x10DE0201, "GeForce3 Ti 200" }, @@ -174,6 +177,8 @@ { 0x10DE0323, "GeForce FX 5200SE" }, { 0x10DE0324, "GeForce FX Go5200" }, { 0x10DE0325, "GeForce FX Go5250" }, + { 0x10DE0326, "GeForce FX 5500" }, + { 0x10DE0327, "GeForce FX 5100" }, { 0x10DE0328, "GeForce FX Go5200 32M/64M" }, #if defined(__powerpc__) { 0x10DE0329, "GeForce FX 5200 (Mac)" }, @@ -181,15 +186,16 @@ { 0x10DE0329, "0x0329" }, #endif { 0x10DE032A, "Quadro NVS 280 PCI" }, - { 0x10DE032B, "Quadro FX 500" }, - { 0x10DE032C, "GeForce FX Go5300" }, + { 0x10DE032B, "Quadro FX 500/600 PCI" }, + { 0x10DE032C, "GeForce FX Go53xx Series" }, { 0x10DE032D, "GeForce FX Go5100" }, { 0x10DE032F, "0x032F" }, { 0x10DE0330, "GeForce FX 5900 Ultra" }, { 0x10DE0331, "GeForce FX 5900" }, { 0x10DE0332, "GeForce FX 5900XT" }, { 0x10DE0333, "GeForce FX 5950 Ultra" }, - { 0x10DE0334, "0x0334" }, + { 0x10DE033F, "Quadro FX 700" }, + { 0x10DE0334, "GeForce FX 5900ZT" }, { 0x10DE0338, "Quadro FX 3000" }, { 0x10DE0341, "GeForce FX 5700 Ultra" }, { 0x10DE0342, "GeForce FX 5700" }, @@ -203,6 +209,42 @@ { 0x10DE034C, "Quadro FX Go1000" }, { 0x10DE034E, "Quadro FX 1100" }, { 0x10DE034F, "0x034F" }, + { 0x10DE0040, "GeForce 6800 Ultra" }, + { 0x10DE0041, "GeForce 6800" }, + { 0x10DE0042, "GeForce 6800 LE" }, + { 0x10DE0043, "0x0043" }, + { 0x10DE0045, "GeForce 6800 GT" }, + { 0x10DE0049, "0x0049" }, + { 0x10DE004E, "Quadro FX 4000" }, + { 0x10DE004D, "Quadro FX 4400" }, + { 0x10DE00C0, "0x00C0" }, + { 0x10DE00C1, "0x00C1" }, + { 0x10DE00C2, "GeForce 6800 LE" }, + { 0x10DE00C8, "0x00C8" }, + { 0x10DE00C9, "0x00C9" }, + { 0x10DE00CC, "0x00CC" }, + { 0x10DE00CE, "0x00CE" }, + { 0x10DE0140, "GeForce 6600 GT" }, + { 0x10DE0141, "GeForce 6600" }, + { 0x10DE0142, "0x0142" }, + { 0x10DE0143, "0x0143" }, + { 0x10DE0144, "GeForce Go 6600" }, + { 0x10DE0145, "GeForce 6610 XL" }, + { 0x10DE0146, "GeForce Go 6600 TE/6200 TE" }, + { 0x10DE0147, "0x0147" }, + { 0x10DE0148, "GeForce Go 6600" }, + { 0x10DE0149, "0x0149" }, + { 0x10DE014B, "0x014B" }, + { 0x10DE014C, "0x014C" }, + { 0x10DE014D, "0x014D" }, + { 0x10DE014E, "Quadro FX 540" }, + { 0x10DE014F, "GeForce 6200" }, + { 0x10DE0160, "0x0160" }, + { 0x10DE0166, "0x0166" }, + { 0x10DE0210, "0x0210" }, + { 0x10DE0211, "0x0211" }, + { 0x10DE021D, "0x021D" }, + { 0x10DE021E, "0x021E" }, {-1, NULL} }; @@ -350,7 +392,9 @@ OPTION_VIDEO_KEY, OPTION_FLAT_PANEL, OPTION_FP_DITHER, - OPTION_CRTC_NUMBER + OPTION_CRTC_NUMBER, + OPTION_FP_SCALE, + OPTION_FP_TWEAK } NVOpts; @@ -365,6 +409,8 @@ { OPTION_FLAT_PANEL, "FlatPanel", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_FP_DITHER, "FPDither", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_CRTC_NUMBER, "CrtcNumber", OPTV_INTEGER, {0}, FALSE }, + { OPTION_FP_SCALE, "FPScale", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_FP_TWEAK, "FPTweak", OPTV_INTEGER, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -494,6 +540,36 @@ #define MAX_CHIPS MAXSCREENS + +static CARD32 +NVGetPCIXpressChip (pciVideoPtr pVideo) +{ + volatile CARD32 *regs; + CARD32 pciid, pcicmd; + PCITAG Tag = ((pciConfigPtr)(pVideo->thisCard))->tag; + + pcicmd = pciReadLong(Tag, PCI_CMD_STAT_REG); + pciWriteLong(Tag, PCI_CMD_STAT_REG, pcicmd | PCI_CMD_MEM_ENABLE); + + regs = xf86MapPciMem(-1, VIDMEM_MMIO, Tag, pVideo->memBase[0], 0x2000); + + pciid = regs[0x1800/4]; + + xf86UnMapVidMem(-1, (pointer)regs, 0x2000); + + pciWriteLong(Tag, PCI_CMD_STAT_REG, pcicmd); + + if((pciid & 0x0000ffff) == 0x000010DE) + pciid = 0x10DE0000 | (pciid >> 16); + else + if((pciid & 0xffff0000) == 0xDE100000) /* wrong endian */ + pciid = 0x10DE0000 | ((pciid << 8) & 0x0000ff00) | + ((pciid >> 8) & 0x000000ff); + + return pciid; +} + + /* Mandatory */ static Bool NVProbe(DriverPtr drv, int flags) @@ -523,7 +599,11 @@ ((*ppPci)->vendor == PCI_VENDOR_NVIDIA)) { SymTabRec *nvchips = NVKnownChipsets; - int token = ((*ppPci)->vendor << 16) | (*ppPci)->chipType; + int pciid = ((*ppPci)->vendor << 16) | (*ppPci)->chipType; + int token = pciid; + + if((token & 0xfff0) == 0x00F0) + token = NVGetPCIXpressChip(*ppPci); while(nvchips->name) { if(token == nvchips->token) @@ -532,10 +612,10 @@ } if(nvchips->name) { /* found one */ - NVChipsets[numUsed].token = nvchips->token; + NVChipsets[numUsed].token = pciid; NVChipsets[numUsed].name = nvchips->name; - NVPciChipsets[numUsed].numChipset = nvchips->token; - NVPciChipsets[numUsed].PCIid = nvchips->token; + NVPciChipsets[numUsed].numChipset = pciid; + NVPciChipsets[numUsed].PCIid = pciid; NVPciChipsets[numUsed].resList = RES_SHARED_VGA; numUsed++; } else if ((*ppPci)->vendor == PCI_VENDOR_NVIDIA) { @@ -551,10 +631,19 @@ case 0x0320: case 0x0330: case 0x0340: - NVChipsets[numUsed].token = token; + case 0x0040: + case 0x00C0: + case 0x0120: + case 0x0140: + case 0x0160: + case 0x0130: + case 0x01D0: + case 0x0090: + case 0x0210: + NVChipsets[numUsed].token = pciid; NVChipsets[numUsed].name = "Unknown NVIDIA chip"; - NVPciChipsets[numUsed].numChipset = token; - NVPciChipsets[numUsed].PCIid = token; + NVPciChipsets[numUsed].numChipset = pciid; + NVPciChipsets[numUsed].PCIid = pciid; NVPciChipsets[numUsed].resList = RES_SHARED_VGA; numUsed++; break; @@ -768,6 +857,17 @@ static ModeStatus NVValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) { + NVPtr pNv = NVPTR(xf86Screens[scrnIndex]); + + if(pNv->fpWidth && pNv->fpHeight) { + if((pNv->fpWidth < mode->HDisplay) || (pNv->fpHeight < mode->VDisplay)) { + xf86DrvMsg(scrnIndex, X_INFO, "Mode \"%s\" is larger than " + "BIOS programmed panel size of %d x %d. Removing.\n", + mode->name, pNv->fpWidth, pNv->fpHeight); + return (MODE_BAD); + } + } + return (MODE_OK); } @@ -887,11 +987,16 @@ } else { from = X_PROBED; pNv->Chipset = (pNv->PciInfo->vendor << 16) | pNv->PciInfo->chipType; + + if((pNv->Chipset & 0xfff0) == 0x00F0) + pNv->Chipset = NVGetPCIXpressChip(pNv->PciInfo); + pScrn->chipset = (char *)xf86TokenToString(NVKnownChipsets, pNv->Chipset); if(!pScrn->chipset) pScrn->chipset = "Unknown NVIDIA chipset"; } + if (pNv->pEnt->device->chipRev >= 0) { pNv->ChipRev = pNv->pEnt->device->chipRev; xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n", @@ -1026,6 +1131,12 @@ } xf86DrvMsg(pScrn->scrnIndex, from, "Using %s cursor\n", pNv->HWCursor ? "HW" : "SW"); + + pNv->FpScale = TRUE; + if (xf86GetOptValBool(pNv->Options, OPTION_FP_SCALE, &pNv->FpScale)) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Flat panel scaling %s\n", + pNv->FpScale ? "on" : "off"); + } if (xf86ReturnOptValBool(pNv->Options, OPTION_NOACCEL, FALSE)) { pNv->NoAccel = TRUE; xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Acceleration disabled\n"); @@ -1115,6 +1226,14 @@ pNv->CRTCnumber = -1; /* autodetect later */ } + + if (xf86GetOptValInteger(pNv->Options, OPTION_FP_TWEAK, + &pNv->PanelTweak)) + { + pNv->usePanelTweak = TRUE; + } else { + pNv->usePanelTweak = FALSE; + } if (pNv->pEnt->device->MemBase != 0) { /* Require that the config file value matches one of the PCI values. */ @@ -1178,12 +1297,46 @@ return FALSE; } - pNv->alphaCursor = ((pNv->Chipset & 0x0ff0) >= 0x0110); - - pNv->Architecture = (pNv->Chipset & 0x0f00) >> 4; + switch (pNv->Chipset & 0x0ff0) { + case 0x0100: /* GeForce 256 */ + case 0x0110: /* GeForce2 MX */ + case 0x0150: /* GeForce2 */ + case 0x0170: /* GeForce4 MX */ + case 0x0180: /* GeForce4 MX (8x AGP) */ + case 0x01A0: /* nForce */ + case 0x01F0: /* nForce2 */ + pNv->Architecture = NV_ARCH_10; + break; + case 0x0200: /* GeForce3 */ + case 0x0250: /* GeForce4 Ti */ + case 0x0280: /* GeForce4 Ti (8x AGP) */ + pNv->Architecture = NV_ARCH_20; + break; + case 0x0300: /* GeForceFX 5800 */ + case 0x0310: /* GeForceFX 5600 */ + case 0x0320: /* GeForceFX 5200 */ + case 0x0330: /* GeForceFX 5900 */ + case 0x0340: /* GeForceFX 5700 */ + pNv->Architecture = NV_ARCH_30; + break; + case 0x0040: + case 0x00C0: + case 0x0120: + case 0x0130: + case 0x0140: + case 0x0160: + case 0x01D0: + case 0x0090: + case 0x0210: + pNv->Architecture = NV_ARCH_40; + break; + default: + pNv->Architecture = NV_ARCH_04; + break; + } - if(pNv->Architecture < NV_ARCH_10) - pNv->Architecture = NV_ARCH_04; + pNv->alphaCursor = (pNv->Architecture >= NV_ARCH_10) && + ((pNv->Chipset & 0x0ff0) != 0x0100); NVCommonSetup(pScrn); @@ -1225,17 +1378,17 @@ clockRanges->minClock = pNv->MinVClockFreqKHz; clockRanges->maxClock = pNv->MaxVClockFreqKHz; clockRanges->clockIndex = -1; /* programmable */ - if(((pNv->Chipset & 0x0ff0) <= 0x0100) || - ((pNv->Chipset & 0x0ff0) == 0x0150) || - ((pNv->Chipset & 0x0ff0) >= 0x0300)) + clockRanges->doubleScanAllowed = TRUE; + if((pNv->Architecture == NV_ARCH_20) || + ((pNv->Architecture == NV_ARCH_10) && + ((pNv->Chipset & 0x0ff0) != 0x0100) && + ((pNv->Chipset & 0x0ff0) != 0x0150))) { - clockRanges->interlaceAllowed = TRUE; - } else { - /* No NV2x chips support interlaced modes and the only - NV1x chips that do are NV10 and NV15 */ + /* HW is broken */ clockRanges->interlaceAllowed = FALSE; + } else { + clockRanges->interlaceAllowed = TRUE; } - clockRanges->doubleScanAllowed = TRUE; if(pNv->FlatPanel == 1) { clockRanges->interlaceAllowed = FALSE; @@ -1488,22 +1641,28 @@ NVPtr pNv = NVPTR(pScrn); NVRegPtr nvReg = &pNv->SavedReg; + NVLockUnlock(pNv, 0); + if(pNv->twoHeads) { VGA_WR08(pNv->PCIO, 0x03D4, 0x44); - VGA_WR08(pNv->PCIO, 0x03D5, nvReg->crtcOwner); + VGA_WR08(pNv->PCIO, 0x03D5, pNv->CRTCnumber * 0x3); NVLockUnlock(pNv, 0); } - NVLockUnlock(pNv, 0); - /* Only restore text mode fonts/text for the primary card */ vgaHWProtect(pScrn, TRUE); NVDACRestore(pScrn, vgaReg, nvReg, pNv->Primary); + if(pNv->twoHeads) { + VGA_WR08(pNv->PCIO, 0x03D4, 0x44); + VGA_WR08(pNv->PCIO, 0x03D5, nvReg->crtcOwner); + } vgaHWProtect(pScrn, FALSE); } static void NVBacklightEnable(NVPtr pNv, Bool on) { + CARD32 fpcontrol = pNv->PRAMDAC[0x0848/4] & 0xCfffffCC; + /* This is done differently on each laptop. Here we define the ones we know for sure. */ @@ -1524,6 +1683,12 @@ pNv->PCRTC0[0x081C/4] = tmp_pcrt; } #endif + + /* cut the TMDS output */ + if(on) fpcontrol |= pNv->fpSyncs; + else fpcontrol |= 0x20000022; + + pNv->PRAMDAC[0x0848/4] = fpcontrol; } static void @@ -1533,6 +1698,8 @@ if (!pScrn->vtSema) return; + vgaHWDPMSSet(pScrn, PowerManagementMode, flags); + switch (PowerManagementMode) { case DPMSModeStandby: /* HSync: Off, VSync: On */ case DPMSModeSuspend: /* HSync: On, VSync: Off */ @@ -1544,7 +1711,6 @@ default: break; } - vgaHWDPMSSet(pScrn, PowerManagementMode, flags); } @@ -1646,7 +1812,7 @@ * function. If not, the visuals will need to be setup before calling * a fb ScreenInit() function and fixed up after. * - * For most PC hardware at depths >= 8, the defaults that cfb uses + * For most PC hardware at depths >= 8, the defaults that fb uses * are not appropriate. In this driver, we fixup the visuals after. */ @@ -1830,6 +1996,13 @@ vgaHWPtr pVga = VGAHWPTR(pScrn); vgaRegPtr vgaReg = &pVga->SavedReg; + NVLockUnlock(pNv, 0); + if(pNv->twoHeads) { + VGA_WR08(pNv->PCIO, 0x03D4, 0x44); + VGA_WR08(pNv->PCIO, 0x03D5, pNv->CRTCnumber * 0x3); + NVLockUnlock(pNv, 0); + } + NVDACSave(pScrn, vgaReg, nvReg, pNv->Primary); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 2004-12-16 02:42:35.000000000 +0100 @@ -36,7 +36,7 @@ |* those rights set forth herein. *| |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v 1.4 2003/11/03 05:11:25 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v 1.13 2004/12/09 00:21:04 mvojkovi Exp $ */ #include "nv_local.h" #include "compiler.h" @@ -71,6 +71,12 @@ (ShowHide & 0x01); VGA_WR08(pNv->PCIO, 0x3D4, 0x31); VGA_WR08(pNv->PCIO, 0x3D5, pNv->CurrentState->cursor1); + + if(pNv->Architecture == NV_ARCH_40) { /* HW bug */ + volatile CARD32 curpos = pNv->PRAMDAC[0x0300/4]; + pNv->PRAMDAC[0x0300/4] = curpos; + } + return (current & 0x01); } @@ -132,6 +138,26 @@ { unsigned int pll, N, M, MB, NB, P; + if(pNv->Architecture >= NV_ARCH_40) { + pll = pNv->PMC[0x4020/4]; + P = (pll >> 16) & 0x03; + pll = pNv->PMC[0x4024/4]; + M = pll & 0xFF; + N = (pll >> 8) & 0xFF; + MB = (pll >> 16) & 0xFF; + NB = (pll >> 24) & 0xFF; + *MClk = ((N * NB * pNv->CrystalFreqKHz) / (M * MB)) >> P; + + pll = pNv->PMC[0x4000/4]; + P = (pll >> 16) & 0x03; + pll = pNv->PMC[0x4004/4]; + M = pll & 0xFF; + N = (pll >> 8) & 0xFF; + MB = (pll >> 16) & 0xFF; + NB = (pll >> 24) & 0xFF; + + *NVClk = ((N * NB * pNv->CrystalFreqKHz) / (M * MB)) >> P; + } else if(pNv->twoStagePLL) { pll = pNv->PRAMDAC0[0x0504/4]; M = pll & 0xFF; @@ -202,6 +228,10 @@ P = (pll >> 16) & 0x0F; *NVClk = (N * pNv->CrystalFreqKHz / M) >> P; } + +#if 0 + ErrorF("NVClock = %i MHz, MEMClock = %i MHz\n", *NVClk/1000, *MClk/1000); +#endif } @@ -509,21 +539,6 @@ clwm = us_crt * crtc_drain_rate/(1000*1000); clwm++; /* fixed point <= float_point - 1. Fixes that */ - /* - // - // Another concern, only for high pclks so don't do this - // with video: - // What happens if the latency to fetch the cbs is so large that - // fifo empties. In that case we need to have an alternate clwm value - // based off the total burst fetch - // - us_crt = (cbs * 1000 * 1000)/ (8*width)/mclk_freq ; - us_crt = us_crt + us_m + us_n + us_p + (4 * 1000 * 1000)/mclk_freq; - clwm_mt = us_crt * crtc_drain_rate/(1000*1000); - clwm_mt ++; - if(clwm_mt > clwm) - clwm = clwm_mt; - */ /* Finally, a heuristic check when width == 64 bits */ if(width == 1){ nvclk_fill = nvclk_freq * 8; @@ -622,6 +637,28 @@ } } + +static void nv30UpdateArbitrationSettings ( + NVPtr pNv, + unsigned *burst, + unsigned *lwm +) +{ + unsigned int MClk, NVClk; + unsigned int fifo_size, burst_size, graphics_lwm; + + fifo_size = 2048; + burst_size = 512; + graphics_lwm = fifo_size - burst_size; + + nvGetClocks(pNv, &MClk, &NVClk); + + *burst = 0; + burst_size >>= 5; + while(burst_size >>= 1) (*burst)++; + *lwm = graphics_lwm >> 3; +} + static void nForceUpdateArbitrationSettings ( unsigned VClk, unsigned pixelDepth, @@ -632,12 +669,17 @@ { nv10_fifo_info fifo_data; nv10_sim_state sim_data; - unsigned int M, N, P, pll, MClk, NVClk; - unsigned int uMClkPostDiv, memctrl; + unsigned int M, N, P, pll, MClk, NVClk, memctrl; + + if((pNv->Chipset & 0x0FF0) == 0x01A0) { + unsigned int uMClkPostDiv; - uMClkPostDiv = (pciReadLong(pciTag(0, 0, 3), 0x6C) >> 8) & 0xf; - if(!uMClkPostDiv) uMClkPostDiv = 4; - MClk = 400000 / uMClkPostDiv; + uMClkPostDiv = (pciReadLong(pciTag(0, 0, 3), 0x6C) >> 8) & 0xf; + if(!uMClkPostDiv) uMClkPostDiv = 4; + MClk = 400000 / uMClkPostDiv; + } else { + MClk = pciReadLong(pciTag(0, 0, 5), 0x4C) / 1000; + } pll = pNv->PRAMDAC0[0x0500/4]; M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F; @@ -837,12 +879,16 @@ &(state->arbitration0), &(state->arbitration1), pNv); - } else { + } else if(pNv->Architecture < NV_ARCH_30) { nv10UpdateArbitrationSettings(VClk, pixelDepth * 8, &(state->arbitration0), &(state->arbitration1), pNv); + } else { + nv30UpdateArbitrationSettings(pNv, + &(state->arbitration0), + &(state->arbitration1)); } state->cursor0 = 0x80 | (pNv->CursorStart >> 17); state->cursor1 = (pNv->CursorStart >> 11) << 2; @@ -901,79 +947,167 @@ pNv->PFB[0x02B4/4] = pNv->FbMapSize - 1; } - pNv->PRAMIN[0x0000] = 0x80000010; - pNv->PRAMIN[0x0001] = 0x80011201; - pNv->PRAMIN[0x0002] = 0x80000011; - pNv->PRAMIN[0x0003] = 0x80011202; - pNv->PRAMIN[0x0004] = 0x80000012; - pNv->PRAMIN[0x0005] = 0x80011203; - pNv->PRAMIN[0x0006] = 0x80000013; - pNv->PRAMIN[0x0007] = 0x80011204; - pNv->PRAMIN[0x0008] = 0x80000014; - pNv->PRAMIN[0x0009] = 0x80011205; - pNv->PRAMIN[0x000A] = 0x80000015; - pNv->PRAMIN[0x000B] = 0x80011206; - pNv->PRAMIN[0x000C] = 0x80000016; - pNv->PRAMIN[0x000D] = 0x80011207; - pNv->PRAMIN[0x000E] = 0x80000017; - pNv->PRAMIN[0x000F] = 0x80011208; - pNv->PRAMIN[0x0800] = 0x00003000; - pNv->PRAMIN[0x0801] = pNv->FbMapSize - 1; - pNv->PRAMIN[0x0802] = 0x00000002; - pNv->PRAMIN[0x0803] = 0x00000002; - if(pNv->Architecture >= NV_ARCH_10) - pNv->PRAMIN[0x0804] = 0x01008062; - else - pNv->PRAMIN[0x0804] = 0x01008042; - pNv->PRAMIN[0x0805] = 0x00000000; - pNv->PRAMIN[0x0806] = 0x12001200; - pNv->PRAMIN[0x0807] = 0x00000000; - pNv->PRAMIN[0x0808] = 0x01008043; - pNv->PRAMIN[0x0809] = 0x00000000; - pNv->PRAMIN[0x080A] = 0x00000000; - pNv->PRAMIN[0x080B] = 0x00000000; - pNv->PRAMIN[0x080C] = 0x01008044; - pNv->PRAMIN[0x080D] = 0x00000002; - pNv->PRAMIN[0x080E] = 0x00000000; - pNv->PRAMIN[0x080F] = 0x00000000; - pNv->PRAMIN[0x0810] = 0x01008019; - pNv->PRAMIN[0x0811] = 0x00000000; - pNv->PRAMIN[0x0812] = 0x00000000; - pNv->PRAMIN[0x0813] = 0x00000000; - pNv->PRAMIN[0x0814] = 0x0100A05C; - pNv->PRAMIN[0x0815] = 0x00000000; - pNv->PRAMIN[0x0816] = 0x00000000; - pNv->PRAMIN[0x0817] = 0x00000000; - pNv->PRAMIN[0x0818] = 0x0100805F; - pNv->PRAMIN[0x0819] = 0x00000000; - pNv->PRAMIN[0x081A] = 0x12001200; - pNv->PRAMIN[0x081B] = 0x00000000; - pNv->PRAMIN[0x081C] = 0x0100804A; - pNv->PRAMIN[0x081D] = 0x00000002; - pNv->PRAMIN[0x081E] = 0x00000000; - pNv->PRAMIN[0x081F] = 0x00000000; - pNv->PRAMIN[0x0820] = 0x01018077; - pNv->PRAMIN[0x0821] = 0x00000000; - pNv->PRAMIN[0x0822] = 0x01201200; - pNv->PRAMIN[0x0823] = 0x00000000; - pNv->PRAMIN[0x0824] = 0x00003002; - pNv->PRAMIN[0x0825] = 0x00007FFF; - pNv->PRAMIN[0x0826] = pNv->FbUsableSize | 0x00000002; - pNv->PRAMIN[0x0827] = 0x00000002; + if(pNv->Architecture >= NV_ARCH_40) { + pNv->PRAMIN[0x0000] = 0x80000010; + pNv->PRAMIN[0x0001] = 0x00101202; + pNv->PRAMIN[0x0002] = 0x80000011; + pNv->PRAMIN[0x0003] = 0x00101204; + pNv->PRAMIN[0x0004] = 0x80000012; + pNv->PRAMIN[0x0005] = 0x00101206; + pNv->PRAMIN[0x0006] = 0x80000013; + pNv->PRAMIN[0x0007] = 0x00101208; + pNv->PRAMIN[0x0008] = 0x80000014; + pNv->PRAMIN[0x0009] = 0x0010120A; + pNv->PRAMIN[0x000A] = 0x80000015; + pNv->PRAMIN[0x000B] = 0x0010120C; + pNv->PRAMIN[0x000C] = 0x80000016; + pNv->PRAMIN[0x000D] = 0x0010120E; + pNv->PRAMIN[0x000E] = 0x80000017; + pNv->PRAMIN[0x000F] = 0x00101210; + pNv->PRAMIN[0x0800] = 0x00003000; + pNv->PRAMIN[0x0801] = pNv->FbMapSize - 1; + pNv->PRAMIN[0x0802] = 0x00000002; + pNv->PRAMIN[0x0808] = 0x02080062; + pNv->PRAMIN[0x0809] = 0x00000000; + pNv->PRAMIN[0x080A] = 0x00001200; + pNv->PRAMIN[0x080B] = 0x00001200; + pNv->PRAMIN[0x080C] = 0x00000000; + pNv->PRAMIN[0x080D] = 0x00000000; + pNv->PRAMIN[0x0810] = 0x02080043; + pNv->PRAMIN[0x0811] = 0x00000000; + pNv->PRAMIN[0x0812] = 0x00000000; + pNv->PRAMIN[0x0813] = 0x00000000; + pNv->PRAMIN[0x0814] = 0x00000000; + pNv->PRAMIN[0x0815] = 0x00000000; + pNv->PRAMIN[0x0818] = 0x02080044; + pNv->PRAMIN[0x0819] = 0x02000000; + pNv->PRAMIN[0x081A] = 0x00000000; + pNv->PRAMIN[0x081B] = 0x00000000; + pNv->PRAMIN[0x081C] = 0x00000000; + pNv->PRAMIN[0x081D] = 0x00000000; + pNv->PRAMIN[0x0820] = 0x02080019; + pNv->PRAMIN[0x0821] = 0x00000000; + pNv->PRAMIN[0x0822] = 0x00000000; + pNv->PRAMIN[0x0823] = 0x00000000; + pNv->PRAMIN[0x0824] = 0x00000000; + pNv->PRAMIN[0x0825] = 0x00000000; + pNv->PRAMIN[0x0828] = 0x020A005C; + pNv->PRAMIN[0x0829] = 0x00000000; + pNv->PRAMIN[0x082A] = 0x00000000; + pNv->PRAMIN[0x082B] = 0x00000000; + pNv->PRAMIN[0x082C] = 0x00000000; + pNv->PRAMIN[0x082D] = 0x00000000; + pNv->PRAMIN[0x0830] = 0x0208009F; + pNv->PRAMIN[0x0831] = 0x00000000; + pNv->PRAMIN[0x0832] = 0x00001200; + pNv->PRAMIN[0x0833] = 0x00001200; + pNv->PRAMIN[0x0834] = 0x00000000; + pNv->PRAMIN[0x0835] = 0x00000000; + pNv->PRAMIN[0x0838] = 0x0208004A; + pNv->PRAMIN[0x0839] = 0x02000000; + pNv->PRAMIN[0x083A] = 0x00000000; + pNv->PRAMIN[0x083B] = 0x00000000; + pNv->PRAMIN[0x083C] = 0x00000000; + pNv->PRAMIN[0x083D] = 0x00000000; + pNv->PRAMIN[0x0840] = 0x02080077; + pNv->PRAMIN[0x0841] = 0x00000000; + pNv->PRAMIN[0x0842] = 0x00001200; + pNv->PRAMIN[0x0843] = 0x00001200; + pNv->PRAMIN[0x0844] = 0x00000000; + pNv->PRAMIN[0x0845] = 0x00000000; + pNv->PRAMIN[0x084C] = 0x00003002; + pNv->PRAMIN[0x084D] = 0x00007FFF; + pNv->PRAMIN[0x084E] = pNv->FbUsableSize | 0x00000002; #if X_BYTE_ORDER == X_BIG_ENDIAN - pNv->PRAMIN[0x0804] |= 0x00080000; - pNv->PRAMIN[0x0808] |= 0x00080000; - pNv->PRAMIN[0x080C] |= 0x00080000; - pNv->PRAMIN[0x0810] |= 0x00080000; - pNv->PRAMIN[0x0814] |= 0x00080000; - pNv->PRAMIN[0x0818] |= 0x00080000; - pNv->PRAMIN[0x081C] |= 0x00080000; - pNv->PRAMIN[0x0820] |= 0x00080000; + pNv->PRAMIN[0x080A] |= 0x01000000; + pNv->PRAMIN[0x0812] |= 0x01000000; + pNv->PRAMIN[0x081A] |= 0x01000000; + pNv->PRAMIN[0x0822] |= 0x01000000; + pNv->PRAMIN[0x082A] |= 0x01000000; + pNv->PRAMIN[0x0832] |= 0x01000000; + pNv->PRAMIN[0x083A] |= 0x01000000; + pNv->PRAMIN[0x0842] |= 0x01000000; + pNv->PRAMIN[0x0819] = 0x01000000; + pNv->PRAMIN[0x0839] = 0x01000000; +#endif + } else { + pNv->PRAMIN[0x0000] = 0x80000010; + pNv->PRAMIN[0x0001] = 0x80011201; + pNv->PRAMIN[0x0002] = 0x80000011; + pNv->PRAMIN[0x0003] = 0x80011202; + pNv->PRAMIN[0x0004] = 0x80000012; + pNv->PRAMIN[0x0005] = 0x80011203; + pNv->PRAMIN[0x0006] = 0x80000013; + pNv->PRAMIN[0x0007] = 0x80011204; + pNv->PRAMIN[0x0008] = 0x80000014; + pNv->PRAMIN[0x0009] = 0x80011205; + pNv->PRAMIN[0x000A] = 0x80000015; + pNv->PRAMIN[0x000B] = 0x80011206; + pNv->PRAMIN[0x000C] = 0x80000016; + pNv->PRAMIN[0x000D] = 0x80011207; + pNv->PRAMIN[0x000E] = 0x80000017; + pNv->PRAMIN[0x000F] = 0x80011208; + pNv->PRAMIN[0x0800] = 0x00003000; + pNv->PRAMIN[0x0801] = pNv->FbMapSize - 1; + pNv->PRAMIN[0x0802] = 0x00000002; + pNv->PRAMIN[0x0803] = 0x00000002; + if(pNv->Architecture >= NV_ARCH_10) + pNv->PRAMIN[0x0804] = 0x01008062; + else + pNv->PRAMIN[0x0804] = 0x01008042; + pNv->PRAMIN[0x0805] = 0x00000000; + pNv->PRAMIN[0x0806] = 0x12001200; + pNv->PRAMIN[0x0807] = 0x00000000; + pNv->PRAMIN[0x0808] = 0x01008043; + pNv->PRAMIN[0x0809] = 0x00000000; + pNv->PRAMIN[0x080A] = 0x00000000; + pNv->PRAMIN[0x080B] = 0x00000000; + pNv->PRAMIN[0x080C] = 0x01008044; + pNv->PRAMIN[0x080D] = 0x00000002; + pNv->PRAMIN[0x080E] = 0x00000000; + pNv->PRAMIN[0x080F] = 0x00000000; + pNv->PRAMIN[0x0810] = 0x01008019; + pNv->PRAMIN[0x0811] = 0x00000000; + pNv->PRAMIN[0x0812] = 0x00000000; + pNv->PRAMIN[0x0813] = 0x00000000; + pNv->PRAMIN[0x0814] = 0x0100A05C; + pNv->PRAMIN[0x0815] = 0x00000000; + pNv->PRAMIN[0x0816] = 0x00000000; + pNv->PRAMIN[0x0817] = 0x00000000; + if(pNv->WaitVSyncPossible) + pNv->PRAMIN[0x0818] = 0x0100809F; + else + pNv->PRAMIN[0x0818] = 0x0100805F; + pNv->PRAMIN[0x0819] = 0x00000000; + pNv->PRAMIN[0x081A] = 0x12001200; + pNv->PRAMIN[0x081B] = 0x00000000; + pNv->PRAMIN[0x081C] = 0x0100804A; + pNv->PRAMIN[0x081D] = 0x00000002; + pNv->PRAMIN[0x081E] = 0x00000000; + pNv->PRAMIN[0x081F] = 0x00000000; + pNv->PRAMIN[0x0820] = 0x01018077; + pNv->PRAMIN[0x0821] = 0x00000000; + pNv->PRAMIN[0x0822] = 0x12001200; + pNv->PRAMIN[0x0823] = 0x00000000; + pNv->PRAMIN[0x0824] = 0x00003002; + pNv->PRAMIN[0x0825] = 0x00007FFF; + pNv->PRAMIN[0x0826] = pNv->FbUsableSize | 0x00000002; + pNv->PRAMIN[0x0827] = 0x00000002; - pNv->PRAMIN[0x080D] = 0x00000001; - pNv->PRAMIN[0x081D] = 0x00000001; +#if X_BYTE_ORDER == X_BIG_ENDIAN + pNv->PRAMIN[0x0804] |= 0x00080000; + pNv->PRAMIN[0x0808] |= 0x00080000; + pNv->PRAMIN[0x080C] |= 0x00080000; + pNv->PRAMIN[0x0810] |= 0x00080000; + pNv->PRAMIN[0x0814] |= 0x00080000; + pNv->PRAMIN[0x0818] |= 0x00080000; + pNv->PRAMIN[0x081C] |= 0x00080000; + pNv->PRAMIN[0x0820] |= 0x00080000; + pNv->PRAMIN[0x080D] = 0x00000001; + pNv->PRAMIN[0x081D] = 0x00000001; #endif + } if(pNv->Architecture < NV_ARCH_10) { if((pNv->Chipset & 0x0fff) == 0x0020) { @@ -985,6 +1119,7 @@ pNv->PGRAPH[0x0084/4] = 0x72111101; pNv->PGRAPH[0x0088/4] = 0x11D5F071; pNv->PGRAPH[0x008C/4] = 0x0004FF31; + pNv->PGRAPH[0x008C/4] = 0x4004FF31; pNv->PGRAPH[0x0140/4] = 0x00000000; pNv->PGRAPH[0x0100/4] = 0xFFFFFFFF; @@ -993,6 +1128,7 @@ pNv->PGRAPH[0x0720/4] = 0x00000001; pNv->PGRAPH[0x0810/4] = 0x00000000; + pNv->PGRAPH[0x0608/4] = 0xFFFFFFFF; } else { pNv->PGRAPH[0x0080/4] = 0xFFFFFFFF; pNv->PGRAPH[0x0080/4] = 0x00000000; @@ -1002,6 +1138,8 @@ pNv->PGRAPH[0x0144/4] = 0x10010100; pNv->PGRAPH[0x0714/4] = 0xFFFFFFFF; pNv->PGRAPH[0x0720/4] = 0x00000001; + pNv->PGRAPH[0x0710/4] &= 0x0007ff00; + pNv->PGRAPH[0x0710/4] |= 0x00020100; if(pNv->Architecture == NV_ARCH_10) { pNv->PGRAPH[0x0084/4] = 0x00118700; @@ -1017,8 +1155,55 @@ pNv->PGRAPH[0x688/4] = pNv->FbMapSize - 1; pNv->PGRAPH[0x0810/4] = 0x00000000; + pNv->PGRAPH[0x0608/4] = 0xFFFFFFFF; } else { - if(pNv->Architecture >= NV_ARCH_30) { + if(pNv->Architecture >= NV_ARCH_40) { + pNv->PGRAPH[0x0084/4] = 0x401287c0; + pNv->PGRAPH[0x008C/4] = 0x60de8051; + pNv->PGRAPH[0x0090/4] = 0x00008000; + pNv->PGRAPH[0x0610/4] = 0x00be3c5f; + + if((pNv->Chipset & 0xfff0) == 0x0040) { + pNv->PGRAPH[0x09b0/4] = 0x83280fff; + pNv->PGRAPH[0x09b4/4] = 0x000000a0; + } else { + pNv->PGRAPH[0x0820/4] = 0x83280eff; + pNv->PGRAPH[0x0824/4] = 0x000000a0; + } + + switch(pNv->Chipset & 0xfff0) { + case 0x0040: + pNv->PGRAPH[0x09b8/4] = 0x0078e366; + pNv->PGRAPH[0x09bc/4] = 0x0000014c; + pNv->PFB[0x033C/4] &= 0xffff7fff; + break; + case 0x00C0: + pNv->PGRAPH[0x0828/4] = 0x007596ff; + pNv->PGRAPH[0x082C/4] = 0x00000108; + break; + case 0x0160: + pNv->PMC[0x1700/4] = pNv->PFB[0x020C/4]; + pNv->PMC[0x1704/4] = 0; + pNv->PMC[0x1708/4] = 0; + pNv->PMC[0x170C/4] = pNv->PFB[0x020C/4]; + pNv->PGRAPH[0x0860/4] = 0; + pNv->PGRAPH[0x0864/4] = 0; + pNv->PRAMDAC[0x0608/4] |= 0x00100000; + break; + case 0x0140: + pNv->PGRAPH[0x0828/4] = 0x0072cb77; + pNv->PGRAPH[0x082C/4] = 0x00000108; + break; + default: + break; + }; + + pNv->PGRAPH[0x0b38/4] = 0x2ffff800; + pNv->PGRAPH[0x0b3c/4] = 0x00006000; + pNv->PGRAPH[0x032C/4] = 0x01000000; + pNv->PGRAPH[0x0220/4] = 0x00001200; + } else + if(pNv->Architecture == NV_ARCH_30) { pNv->PGRAPH[0x0084/4] = 0x40108700; pNv->PGRAPH[0x0890/4] = 0x00140000; pNv->PGRAPH[0x008C/4] = 0xf00e0431; @@ -1055,19 +1240,44 @@ for(i = 0; i < 32; i++) pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0240/4) + i]; - pNv->PGRAPH[0x09A4/4] = pNv->PFB[0x0200/4]; - pNv->PGRAPH[0x09A8/4] = pNv->PFB[0x0204/4]; - pNv->PGRAPH[0x0750/4] = 0x00EA0000; - pNv->PGRAPH[0x0754/4] = pNv->PFB[0x0200/4]; - pNv->PGRAPH[0x0750/4] = 0x00EA0004; - pNv->PGRAPH[0x0754/4] = pNv->PFB[0x0204/4]; - - pNv->PGRAPH[0x0820/4] = 0; - pNv->PGRAPH[0x0824/4] = 0; - pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1; - pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1; + if(pNv->Architecture >= NV_ARCH_40) { + if((pNv->Chipset & 0xfff0) == 0x0040) { + pNv->PGRAPH[0x09A4/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x09A8/4] = pNv->PFB[0x0204/4]; + pNv->PGRAPH[0x69A4/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x69A8/4] = pNv->PFB[0x0204/4]; + + pNv->PGRAPH[0x0820/4] = 0; + pNv->PGRAPH[0x0824/4] = 0; + pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1; + pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1; + } else { + pNv->PGRAPH[0x09F0/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x09F4/4] = pNv->PFB[0x0204/4]; + pNv->PGRAPH[0x69F0/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x69F4/4] = pNv->PFB[0x0204/4]; + + pNv->PGRAPH[0x0840/4] = 0; + pNv->PGRAPH[0x0844/4] = 0; + pNv->PGRAPH[0x08a0/4] = pNv->FbMapSize - 1; + pNv->PGRAPH[0x08a4/4] = pNv->FbMapSize - 1; + } + } else { + pNv->PGRAPH[0x09A4/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x09A8/4] = pNv->PFB[0x0204/4]; + pNv->PGRAPH[0x0750/4] = 0x00EA0000; + pNv->PGRAPH[0x0754/4] = pNv->PFB[0x0200/4]; + pNv->PGRAPH[0x0750/4] = 0x00EA0004; + pNv->PGRAPH[0x0754/4] = pNv->PFB[0x0204/4]; + + pNv->PGRAPH[0x0820/4] = 0; + pNv->PGRAPH[0x0824/4] = 0; + pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1; + pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1; + } pNv->PGRAPH[0x0B20/4] = 0x00000000; + pNv->PGRAPH[0x0B04/4] = 0xFFFFFFFF; } } pNv->PGRAPH[0x053C/4] = 0; @@ -1079,10 +1289,16 @@ pNv->PFIFO[0x0141] = 0x00000001; pNv->PFIFO[0x0480] = 0x00000000; pNv->PFIFO[0x0494] = 0x00000000; - pNv->PFIFO[0x0481] = 0x00000100; + if(pNv->Architecture >= NV_ARCH_40) + pNv->PFIFO[0x0481] = 0x00010000; + else + pNv->PFIFO[0x0481] = 0x00000100; pNv->PFIFO[0x0490] = 0x00000000; pNv->PFIFO[0x0491] = 0x00000000; - pNv->PFIFO[0x048B] = 0x00001209; + if(pNv->Architecture >= NV_ARCH_40) + pNv->PFIFO[0x048B] = 0x00001213; + else + pNv->PFIFO[0x048B] = 0x00001209; pNv->PFIFO[0x0400] = 0x00000000; pNv->PFIFO[0x0414] = 0x00000000; pNv->PFIFO[0x0084] = 0x03000100; @@ -1122,12 +1338,14 @@ pNv->PMC[0x1588/4] = 0; pNv->PCRTC[0x0810/4] = state->cursorConfig; + pNv->PCRTC[0x0830/4] = state->displayV - 3; + pNv->PCRTC[0x0834/4] = state->displayV - 1; if(pNv->FlatPanel) { if((pNv->Chipset & 0x0ff0) == 0x0110) { pNv->PRAMDAC[0x0528/4] = state->dither; } else - if((pNv->Chipset & 0x0ff0) >= 0x0170) { + if(pNv->twoHeads) { pNv->PRAMDAC[0x083C/4] = state->dither; } @@ -1153,10 +1371,16 @@ VGA_WR08(pNv->PCIO, 0x03D5, state->pixel); VGA_WR08(pNv->PCIO, 0x03D4, 0x2D); VGA_WR08(pNv->PCIO, 0x03D5, state->horiz); + VGA_WR08(pNv->PCIO, 0x03D4, 0x1C); + VGA_WR08(pNv->PCIO, 0x03D5, state->fifo); VGA_WR08(pNv->PCIO, 0x03D4, 0x1B); VGA_WR08(pNv->PCIO, 0x03D5, state->arbitration0); VGA_WR08(pNv->PCIO, 0x03D4, 0x20); VGA_WR08(pNv->PCIO, 0x03D5, state->arbitration1); + if(pNv->Architecture >= NV_ARCH_30) { + VGA_WR08(pNv->PCIO, 0x03D4, 0x47); + VGA_WR08(pNv->PCIO, 0x03D5, state->arbitration1 >> 8); + } VGA_WR08(pNv->PCIO, 0x03D4, 0x30); VGA_WR08(pNv->PCIO, 0x03D5, state->cursor0); VGA_WR08(pNv->PCIO, 0x03D4, 0x31); @@ -1177,6 +1401,7 @@ } } else { pNv->PRAMDAC[0x0848/4] = state->scale; + pNv->PRAMDAC[0x0828/4] = state->crtcSync; } pNv->PRAMDAC[0x0600/4] = state->general; @@ -1202,10 +1427,16 @@ state->pixel = VGA_RD08(pNv->PCIO, 0x03D5); VGA_WR08(pNv->PCIO, 0x03D4, 0x2D); state->horiz = VGA_RD08(pNv->PCIO, 0x03D5); + VGA_WR08(pNv->PCIO, 0x03D4, 0x1C); + state->fifo = VGA_RD08(pNv->PCIO, 0x03D5); VGA_WR08(pNv->PCIO, 0x03D4, 0x1B); state->arbitration0 = VGA_RD08(pNv->PCIO, 0x03D5); VGA_WR08(pNv->PCIO, 0x03D4, 0x20); state->arbitration1 = VGA_RD08(pNv->PCIO, 0x03D5); + if(pNv->Architecture >= NV_ARCH_30) { + VGA_WR08(pNv->PCIO, 0x03D4, 0x47); + state->arbitration1 |= (VGA_RD08(pNv->PCIO, 0x03D5) & 1) << 8; + } VGA_WR08(pNv->PCIO, 0x03D4, 0x30); state->cursor0 = VGA_RD08(pNv->PCIO, 0x03D5); VGA_WR08(pNv->PCIO, 0x03D4, 0x31); @@ -1240,7 +1471,7 @@ if((pNv->Chipset & 0x0ff0) == 0x0110) { state->dither = pNv->PRAMDAC[0x0528/4]; } else - if((pNv->Chipset & 0x0ff0) >= 0x0170) { + if(pNv->twoHeads) { state->dither = pNv->PRAMDAC[0x083C/4]; } @@ -1251,6 +1482,10 @@ state->timingV = VGA_RD08(pNv->PCIO, 0x03D5); } } + + if(pNv->FlatPanel) { + state->crtcSync = pNv->PRAMDAC[0x0828/4]; + } } void NVSetStartAddress ( diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h 2004-11-14 19:13:27.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.9 2003/05/04 01:20:52 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.11 2004/03/20 01:52:16 mvojkovi Exp $ */ #ifndef __NV_PROTO_H__ #define __NV_PROTO_H__ @@ -37,6 +37,7 @@ void NVResetGraphics(ScrnInfoPtr pScrn); void NVDmaKickoff(NVPtr pNv); void NVDmaWait(NVPtr pNv, int size); +void NVWaitVSync(NVPtr pNv); /* in nv_dga.c */ Bool NVDGAInit(ScreenPtr pScreen); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 2004-12-16 02:42:35.000000000 +0100 @@ -37,7 +37,7 @@ |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v 1.39 2003/11/07 23:56:28 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v 1.44 2004/12/09 00:21:05 mvojkovi Exp $ */ #include "nv_include.h" @@ -292,10 +292,10 @@ } #endif - if((pNv->Chipset & 0xffff) == 0x01a0) { + if(implementation == 0x01a0) { int amt = pciReadLong(pciTag(0, 0, 1), 0x7C); pNv->RamAmountKBytes = (((amt >> 6) & 31) + 1) * 1024; - } else if((pNv->Chipset & 0xffff) == 0x01f0) { + } else if(implementation == 0x01f0) { int amt = pciReadLong(pciTag(0, 0, 1), 0x84); pNv->RamAmountKBytes = (((amt >> 4) & 127) + 1) * 1024; } else { @@ -304,10 +304,7 @@ pNv->CrystalFreqKHz = (pNv->PEXTDEV[0x0000/4] & (1 << 6)) ? 14318 : 13500; - if((implementation == 0x0170) || - (implementation == 0x0180) || - (implementation == 0x01F0) || - (implementation >= 0x0250)) + if(pNv->twoHeads && (implementation != 0x0110)) { if(pNv->PEXTDEV[0x0000/4] & (1 << 22)) pNv->CrystalFreqKHz = 27000; @@ -381,15 +378,22 @@ pNv->PDIO0 = (U008*)pNv->REGS + 0x00681000; pNv->PVIO = (U008*)pNv->REGS + 0x000C0000; - pNv->twoHeads = (implementation >= 0x0110) && + pNv->twoHeads = (pNv->Architecture >= NV_ARCH_10) && + (implementation != 0x0100) && (implementation != 0x0150) && (implementation != 0x01A0) && (implementation != 0x0200); - pNv->fpScaler = (pNv->twoHeads && (implementation != 0x0110)); + pNv->fpScaler = (pNv->FpScale && pNv->twoHeads && (implementation!=0x0110)); pNv->twoStagePLL = (implementation == 0x0310) || - (implementation == 0x0340); + (implementation == 0x0340) || + (pNv->Architecture >= NV_ARCH_40); + + pNv->WaitVSyncPossible = (pNv->Architecture >= NV_ARCH_10) && + (implementation != 0x0100); + + pNv->BlendingPossible = ((pNv->Chipset & 0xffff) != 0x0020); /* look for known laptop chips */ switch(pNv->Chipset & 0xffff) { @@ -403,7 +407,7 @@ case 0x017D: case 0x0186: case 0x0187: - case 0x0189: + case 0x018D: case 0x0286: case 0x028C: case 0x0316: @@ -425,6 +429,13 @@ case 0x0349: case 0x034B: case 0x034C: + case 0x0160: + case 0x0166: + case 0x00C8: + case 0x00CC: + case 0x0144: + case 0x0146: + case 0x0148: mobile = TRUE; break; default: @@ -659,6 +670,7 @@ if(pNv->FlatPanel && !pNv->Television) { pNv->fpWidth = pNv->PRAMDAC[0x0820/4] + 1; pNv->fpHeight = pNv->PRAMDAC[0x0800/4] + 1; + pNv->fpSyncs = pNv->PRAMDAC[0x0848/4] & 0x30000033; xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Panel size is %i x %i\n", pNv->fpWidth, pNv->fpHeight); } @@ -666,7 +678,7 @@ if(monitorA) xf86SetDDCproperties(pScrn, monitorA); - if(!pNv->FlatPanel || (pScrn->depth != 24)) + if(!pNv->FlatPanel || (pScrn->depth != 24) || !pNv->twoHeads) pNv->FPDither = FALSE; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h 2004-12-16 02:42:35.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.44 2003/09/08 20:00:27 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.50 2004/12/09 00:21:05 mvojkovi Exp $ */ #ifndef __NV_STRUCT_H__ #define __NV_STRUCT_H__ @@ -13,6 +13,7 @@ #define NV_ARCH_10 0x10 #define NV_ARCH_20 0x20 #define NV_ARCH_30 0x30 +#define NV_ARCH_40 0x40 #define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b)) @@ -43,6 +44,7 @@ U032 scale; U032 dither; U032 extra; + U032 fifo; U032 pixel; U032 horiz; U032 arbitration0; @@ -65,6 +67,8 @@ U032 cursor2; U032 timingH; U032 timingV; + U032 displayV; + U032 crtcSync; } RIVA_HW_STATE, *NVRegPtr; @@ -90,6 +94,7 @@ CARD32 ScratchBufferStart; Bool NoAccel; Bool HWCursor; + Bool FpScale; Bool ShadowFB; unsigned char * ShadowPtr; int ShadowPitch; @@ -153,6 +158,9 @@ Bool fpScaler; int fpWidth; int fpHeight; + CARD32 fpSyncs; + Bool usePanelTweak; + int PanelTweak; CARD32 dmaPut; CARD32 dmaCurrent; @@ -161,6 +169,8 @@ CARD32 *dmaBase; CARD32 currentRop; + Bool WaitVSyncPossible; + Bool BlendingPossible; } NVRec, *NVPtr; #define NVPTR(p) ((NVPtr)((p)->driverPrivate)) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c 2004-11-14 19:13:27.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c,v 1.20tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c,v 1.23 2004/03/20 22:07:06 mvojkovi Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -46,6 +46,7 @@ Bool grabbedByV4L; Bool iturbt_709; Bool blitter; + Bool SyncToVBlank; FBLinearPtr linear; int pitch; int offset; @@ -95,7 +96,7 @@ static Atom xvBrightness, xvContrast, xvColorKey, xvSaturation, xvHue, xvAutopaintColorKey, xvSetDefaults, xvDoubleBuffer, - xvITURBT709; + xvITURBT709, xvSyncToVBlank; /* client libraries expect an encoding */ static XF86VideoEncodingRec DummyEncoding = @@ -114,9 +115,8 @@ {15, DirectColor}, {16, DirectColor}, {24, DirectColor} }; -#define NUM_ATTRIBUTES 9 - -XF86AttributeRec NVAttributes[NUM_ATTRIBUTES] = +#define NUM_OVERLAY_ATTRIBUTES 9 +XF86AttributeRec NVOverlayAttributes[NUM_OVERLAY_ATTRIBUTES] = { {XvSettable | XvGettable, 0, 1, "XV_DOUBLE_BUFFER"}, {XvSettable | XvGettable, 0, (1 << 24) - 1, "XV_COLORKEY"}, @@ -129,6 +129,14 @@ {XvSettable | XvGettable, 0, 1, "XV_ITURBT_709"} }; +#define NUM_BLIT_ATTRIBUTES 2 +XF86AttributeRec NVBlitAttributes[NUM_BLIT_ATTRIBUTES] = +{ + {XvSettable , 0, 0, "XV_SET_DEFAULTS"}, + {XvSettable | XvGettable, 0, 1, "XV_SYNC_TO_VBLANK"} +}; + + #define NUM_IMAGES_YUV 4 #define NUM_IMAGES_ALL 5 @@ -285,7 +293,10 @@ NVPtr pNv = NVPTR(pScrn); int num_adaptors; - if((pScrn->bitsPerPixel != 8) && (pNv->Architecture >= NV_ARCH_10)) { + if((pScrn->bitsPerPixel != 8) && (pNv->Architecture >= NV_ARCH_10) && + ((pNv->Architecture <= NV_ARCH_30) || + ((pNv->Chipset & 0xfff0) == 0x0040))) + { overlayAdaptor = NVSetupOverlayVideo(pScreen); if(overlayAdaptor) @@ -358,8 +369,13 @@ for(i = 0; i < NUM_BLIT_PORTS; i++) adapt->pPortPrivates[i].ptr = (pointer)(pPriv); - adapt->pAttributes = NULL; - adapt->nAttributes = 0; + if(pNv->WaitVSyncPossible) { + adapt->pAttributes = NVBlitAttributes; + adapt->nAttributes = NUM_BLIT_ATTRIBUTES; + } else { + adapt->pAttributes = NULL; + adapt->nAttributes = 0; + } adapt->pImages = NVImages; adapt->nImages = NUM_IMAGES_ALL; adapt->PutVideo = NULL; @@ -377,9 +393,12 @@ pPriv->grabbedByV4L = FALSE; pPriv->blitter = TRUE; pPriv->doubleBuffer = FALSE; + pPriv->SyncToVBlank = pNv->WaitVSyncPossible; pNv->blitAdaptor = adapt; + xvSyncToVBlank = MAKE_ATOM("XV_SYNC_TO_VBLANK"); + return adapt; } @@ -409,8 +428,8 @@ adapt->pPortPrivates = (DevUnion*)(&adapt[1]); pPriv = (NVPortPrivPtr)(&adapt->pPortPrivates[1]); adapt->pPortPrivates[0].ptr = (pointer)(pPriv); - adapt->pAttributes = NVAttributes; - adapt->nAttributes = NUM_ATTRIBUTES; + adapt->pAttributes = NVOverlayAttributes; + adapt->nAttributes = NUM_OVERLAY_ATTRIBUTES; adapt->pImages = NVImages; adapt->nImages = NUM_IMAGES_YUV; adapt->PutVideo = NULL; @@ -571,8 +590,19 @@ NVDmaNext (pNv, SURFACE_FORMAT_DEPTH15); } - NVDmaStart(pNv, STRETCH_BLIT_FORMAT, 1); - NVDmaNext (pNv, format); + if(pPriv->SyncToVBlank) { + NVDmaKickoff(pNv); + NVWaitVSync(pNv); + } + + if(pNv->BlendingPossible) { + NVDmaStart(pNv, STRETCH_BLIT_FORMAT, 2); + NVDmaNext (pNv, format); + NVDmaNext (pNv, STRETCH_BLIT_OPERATION_COPY); + } else { + NVDmaStart(pNv, STRETCH_BLIT_FORMAT, 1); + NVDmaNext (pNv, format); + } while(nbox--) { NVDmaStart(pNv, RECT_SOLID_COLOR, 1); @@ -757,7 +787,20 @@ pointer data ) { - return BadMatch; + NVPortPrivPtr pPriv = (NVPortPrivPtr)data; + NVPtr pNv = NVPTR(pScrnInfo); + + if ((attribute == xvSyncToVBlank) && pNv->WaitVSyncPossible) { + if ((value < 0) || (value > 1)) + return BadValue; + pPriv->SyncToVBlank = value; + } else + if (attribute == xvSetDefaults) { + pPriv->SyncToVBlank = pNv->WaitVSyncPossible; + } else + return BadMatch; + + return Success; } static int NVGetBlitPortAttribute @@ -768,7 +811,14 @@ pointer data ) { - return BadMatch; + NVPortPrivPtr pPriv = (NVPortPrivPtr)data; + + if(attribute == xvSyncToVBlank) + *value = (pPriv->SyncToVBlank) ? 1 : 0; + else + return BadMatch; + + return Success; } @@ -1434,8 +1484,8 @@ NVGetSurfaceAttribute, NVSetSurfaceAttribute, 2046, 2046, - NUM_ATTRIBUTES - 1, - &NVAttributes[1] + NUM_OVERLAY_ATTRIBUTES - 1, + &NVOverlayAttributes[1] }, { &NVImages[2], @@ -1447,8 +1497,8 @@ NVGetSurfaceAttribute, NVSetSurfaceAttribute, 2046, 2046, - NUM_ATTRIBUTES - 1, - &NVAttributes[1] + NUM_OVERLAY_ATTRIBUTES - 1, + &NVOverlayAttributes[1] }, }; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c --- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c 2004-04-23 21:42:10.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c 2004-11-14 19:13:27.000000000 +0100 @@ -37,7 +37,7 @@ |* *| \***************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c,v 1.33 2003/09/21 00:17:34 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_xaa.c,v 1.35 2004/03/20 16:25:18 mvojkovi Exp $ */ #include "nv_include.h" #include "xaalocal.h" @@ -151,6 +151,19 @@ } } +void +NVWaitVSync(NVPtr pNv) +{ + NVDmaStart(pNv, 0x0000A12C, 1); + NVDmaNext (pNv, 0); + NVDmaStart(pNv, 0x0000A134, 1); + NVDmaNext (pNv, pNv->CRTCnumber); + NVDmaStart(pNv, 0x0000A100, 1); + NVDmaNext (pNv, 0); + NVDmaStart(pNv, 0x0000A130, 1); + NVDmaNext (pNv, 0); +} + /* currentRop = 0-15 solid fill 16-31 8x8 pattern fill diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c x11r682/xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c --- xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c 2004-08-20 20:57:06.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c 2005-02-02 02:36:05.000000000 +0100 @@ -1,5 +1,5 @@ /* $XFree86$ */ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c,v 1.13 2004/08/20 18:57:06 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/sis/init301.c,v 1.13.2.1 2005/02/02 01:36:05 gisburn Exp $ */ /* * Mode initializing code (CRT2 section) * for SiS 300/305/540/630/730 and @@ -3501,9 +3501,9 @@ SiS_Pr->SiS_RVBHCMAX = ROMAddr[romptr]; SiS_Pr->SiS_RVBHCFACT = ROMAddr[romptr+1]; SiS_Pr->SiS_VGAHT = ROMAddr[romptr+2] | ((ROMAddr[romptr+3] & 0x0f) << 8); - SiS_Pr->SiS_VGAVT = ROMAddr[romptr+4] | ((ROMAddr[romptr+3] & 0xf0) << 4); + SiS_Pr->SiS_VGAVT = (ROMAddr[romptr+4] << 4) | ((ROMAddr[romptr+3] & 0xf0) >> 4); SiS_Pr->SiS_HT = ROMAddr[romptr+5] | ((ROMAddr[romptr+6] & 0x0f) << 8); - SiS_Pr->SiS_VT = ROMAddr[romptr+7] | ((ROMAddr[romptr+6] & 0xf0) << 4); + SiS_Pr->SiS_VT = (ROMAddr[romptr+7] << 4) | ((ROMAddr[romptr+6] & 0xf0) >> 4); if(SiS_Pr->SiS_VGAHT) gotit = TRUE; else { SiS_Pr->SiS_LCDInfo |= DontExpandLCD; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h x11r682/xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h --- xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h 2004-08-20 20:57:06.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h 2005-02-02 04:22:36.000000000 +0100 @@ -1,5 +1,5 @@ /* $XFree86$ */ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h,v 1.18 2004/08/20 18:57:06 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/sis/sis.h,v 1.18.2.1 2005/02/02 03:22:36 gisburn Exp $ */ /* * Main global data and definitions * @@ -472,7 +472,7 @@ /* Used for makeing use of the BIOS scratch area (save/restore mode number) */ #undef SIS_USE_BIOS_SCRATCH -#if (defined(i386) || defined(__i386) || defined(__i386__) || defined(__AMD64__)) +#if (defined(i386) || defined(__i386) || defined(__i386__) || defined(__AMD64__) || defined(__amd64__)) #define SIS_USE_BIOS_SCRATCH #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c x11r682/xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c --- xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2004-08-31 03:36:13.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2004-12-16 04:38:45.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.6 2004/08/31 01:36:13 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.6.2.1 2004/12/16 03:38:45 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.8 2003/11/03 05:11:47 tsi Exp $ */ /* @@ -12,7 +12,7 @@ * xf86Events.c and xf86Io.c which are * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. */ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.6 2004/08/31 01:36:13 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.6.2.1 2004/12/16 03:38:45 gisburn Exp $ */ #define NEED_EVENTS #include "X.h" @@ -135,7 +135,7 @@ "Protocol", "standard", "AutoRepeat", "500 30", "XkbRules", __XKBDEFRULES__, - "XkbModel", "pc101", + "XkbModel", "pc105", "XkbLayout", "us", "Panix106", "off", "CustomKeycodes", "off", @@ -372,6 +372,7 @@ } #endif pKbd->SetLeds(pInfo, pKbd->leds); + pKbd->autoRepeat = ctrl->autoRepeat; return (Success); } @@ -720,14 +721,14 @@ /* * check for an autorepeat-event */ - if (down) { + if (down && KeyPressed(keycode)) { int num = keycode >> 3; int bit = 1 << (keycode & 7); - if ((keyc->down[num] & bit) && - ((kbdfeed->ctrl.autoRepeat != AutoRepeatModeOn) || - keyc->modifierMap[keycode] || - !(kbdfeed->ctrl.autoRepeats[num] & bit))) - return; + + if ((pKbd->autoRepeat != AutoRepeatModeOn) || + keyc->modifierMap[keycode] || + !(kbdfeed->ctrl.autoRepeats[num] & bit)) + return; } if (UsePrefix) { diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/loader/dixsym.c x11r682/xc/programs/Xserver/hw/xfree86/loader/dixsym.c --- xc/programs/Xserver/hw/xfree86/loader/dixsym.c 2004-08-19 06:08:40.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/loader/dixsym.c 2004-12-08 06:32:54.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.5 2004/08/19 04:08:40 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.5.2.2 2004/12/08 05:32:54 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.63 2003/12/03 * 17:11:29 tsi Exp $ */ @@ -325,15 +325,122 @@ SYMFUNC(AdjustWaitForDelay) SYMVAR(noTestExtensions) SYMFUNC(GiveUp) + +#ifdef BEZIER + SYMVAR(noBezierExtension) +#endif +#ifdef BIGREQS + SYMVAR(noBigReqExtension) +#endif #ifdef COMPOSITE SYMVAR(noCompositeExtension) #endif +#ifdef DAMAGE + SYMVAR(noDamageExtension) +#endif +#ifdef DBE + SYMVAR(noDbeExtension) +#endif +#ifdef DPSEXT + SYMVAR(noDPSExtension) +#endif +#ifdef DPMSExtension + SYMVAR(noDPMSExtension) +#endif +#ifdef EVI + SYMVAR(noEVIExtension) +#endif +#ifdef FONTCACHE + SYMVAR(noFontCacheExtension) +#endif +#ifdef GLXEXT + SYMVAR(noGlxExtension) +#endif +#ifdef LBX + SYMVAR(noLbxExtension) +#endif +#ifdef SCREENSAVER + SYMVAR(noScreenSaverExtension) +#endif +#ifdef MITSHM + SYMVAR(noMITShmExtension) +#endif +#ifdef MITMISC + SYMVAR(noMITMiscExtension) +#endif +#ifdef MULTIBUFFER + SYMVAR(noMultibufferExtension) +#endif +#ifdef RANDR + SYMVAR(noRRExtension) +#endif #ifdef RENDER SYMVAR(noRenderExtension) #endif +#ifdef SHAPE + SYMVAR(noShapeExtension) +#endif +#ifdef XCSECURITY + SYMVAR(noSecurityExtension) +#endif +#ifdef XSYNC + SYMVAR(noSyncExtension) +#endif +#ifdef TOGCUP + SYMVAR(noXcupExtension) +#endif +#ifdef PEXEXT + SYMVAR(noPexExtension) +#endif +#ifdef RES + SYMVAR(noResExtension) +#endif +#ifdef XAPPGROUP + SYMVAR(noXagExtension) +#endif +#ifdef XCMISC + SYMVAR(noXCMiscExtension) +#endif #ifdef XEVIE SYMVAR(noXevieExtension) #endif +#ifdef XIE + SYMVAR(noXie) +#endif +#ifdef XF86BIGFONT + SYMVAR(noXFree86BigfontExtension) +#endif +#ifdef XFreeXDGA + SYMVAR(noXFree86DGAExtension) +#endif +#ifdef XF86DRI + SYMVAR(noXFree86DRIExtension) +#endif +#ifdef XF86MISC + SYMVAR(noXFree86MiscExtension) +#endif +#ifdef XF86VIDMODE + SYMVAR(noXFree86VidModeExtension) +#endif +#ifdef XFIXES + SYMVAR(noXFixesExtension) +#endif +#ifdef XKB +/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */ + SYMVAR(noXkbExtension) +#endif +#ifdef PANORAMIX + SYMVAR(noPanoramiXExtension) +#endif +#ifdef XINPUT + SYMVAR(noXInputExtension) +#endif +#ifdef XIDLE + SYMVAR(noXIdleExtension) +#endif +#ifdef XV + SYMVAR(noXvExtension) +#endif /* log.c */ SYMFUNC(LogVWrite) @@ -386,7 +493,6 @@ /* xkb/xkbInit.c */ SYMFUNC(XkbInitKeyboardDeviceStruct) SYMFUNC(XkbSetRulesDflts) - SYMVAR(noXkbExtension) #endif #ifdef XINPUT diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/loader/elfloader.c x11r682/xc/programs/Xserver/hw/xfree86/loader/elfloader.c --- xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2004-04-23 21:54:06.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c 2004-12-08 07:25:07.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.2 2004/04/23 19:54:06 eich Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.2.4.1 2004/12/08 06:25:07 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.61tsi Exp $ */ /* @@ -922,7 +922,7 @@ ErrorF("ELFCreateGOT() Unable to reallocate memory!!!!\n"); return FALSE; } -# if defined(linux) || defined(__OpenBSD__) +# if defined(linux) || defined(__OpenBSD__) || defined(sun) { unsigned long page_size = getpagesize(); unsigned long round; @@ -1097,7 +1097,7 @@ ErrorF("ELFCreatePLT() Unable to allocate memory!!!!\n"); return; } -# if defined(linux) || defined(__OpenBSD__) +# if defined(linux) || defined(__OpenBSD__) || defined(sun) { unsigned long page_size = getpagesize(); unsigned long round; @@ -2775,7 +2775,7 @@ elffile->lsection[j].size = SecSize(i); elffile->lsection[j].flags = flags; switch (SecType(i)) { -#if defined(linux) || defined(__OpenBSD__) +#if defined(linux) || defined(__OpenBSD__) || defined(sun) case SHT_PROGBITS: { unsigned long page_size = getpagesize(); @@ -2979,7 +2979,7 @@ ErrorF("Unable to allocate ELF sections\n"); return NULL; } -# if defined(linux) || defined(__OpenBSD__) +# if defined(linux) || defined(__OpenBSD__) || defined(sun) { unsigned long page_size = getpagesize(); unsigned long round; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/loader/extsym.c x11r682/xc/programs/Xserver/hw/xfree86/loader/extsym.c --- xc/programs/Xserver/hw/xfree86/loader/extsym.c 2004-08-09 05:40:50.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/loader/extsym.c 2004-12-08 06:32:54.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.4 2004/08/09 03:40:50 krh Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.4.2.1 2004/12/08 05:32:54 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.9 2003/10/15 16:29:03 dawes Exp $ */ /* @@ -66,7 +66,6 @@ #ifdef PANORAMIX SYMFUNC(XineramaRegisterConnectionBlockCallback) SYMFUNC(XineramaDeleteResource) - SYMVAR(noPanoramiXExtension) SYMVAR(PanoramiXNumScreens) SYMVAR(panoramiXdataPtr) SYMVAR(PanoramiXVisualTable) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c --- xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c 2004-04-23 21:54:07.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_KbdMap.c 2004-12-13 15:03:44.000000000 +0100 @@ -677,11 +677,11 @@ }; static CARD8 wsSunMap[] = { - /* 0x00 */ KEY_NOTUSED, - /* 0x01 */ KEY_NOTUSED, /* stop */ - /* 0x02 */ KEY_NOTUSED, /* BrightnessDown / S-VolumeDown */ - /* 0x03 */ KEY_NOTUSED, /* again */ - /* 0x04 */ KEY_NOTUSED, /* BridgtnessUp / S-VolumeUp */ + /* 0x00 */ KEY_Help, + /* 0x01 */ KEY_L1, /* stop */ + /* 0x02 */ KEY_AudioLower, /* BrightnessDown / S-VolumeDown */ + /* 0x03 */ KEY_L2, /* again */ + /* 0x04 */ KEY_AudioRaise, /* BridgtnessUp / S-VolumeUp */ /* 0x05 */ KEY_F1, /* 0x06 */ KEY_F2, /* 0x07 */ KEY_F10, @@ -700,10 +700,10 @@ /* 0x14 */ KEY_Up, /* 0x15 */ KEY_Pause, /* 0x16 */ KEY_Print, - /* 0x17 */ KEY_NOTUSED, /* props */ + /* 0x17 */ KEY_ScrollLock, /* 0x18 */ KEY_Left, - /* 0x19 */ KEY_ScrollLock, - /* 0x1a */ KEY_NOTUSED, /* undo */ + /* 0x19 */ KEY_L3, /* props */ + /* 0x1a */ KEY_L4, /* undo */ /* 0x1b */ KEY_Down, /* 0x1c */ KEY_Right, /* 0x1d */ KEY_Escape, @@ -722,13 +722,13 @@ /* 0x2a */ KEY_Tilde, /* 0x2b */ KEY_BackSpace, /* 0x2c */ KEY_Insert, - /* 0x2d */ KEY_KP_Equal, + /* 0x2d */ KEY_Mute, /* Audio Mute */ /* 0x2e */ KEY_KP_Divide, /* 0x2f */ KEY_KP_Multiply, /* 0x30 */ KEY_NOTUSED, - /* 0x31 */ KEY_NOTUSED, /* front */ + /* 0x31 */ KEY_L5, /* front */ /* 0x32 */ KEY_KP_Decimal, - /* 0x33 */ KEY_NOTUSED, /* copy */ + /* 0x33 */ KEY_L6, /* copy */ /* 0x34 */ KEY_Home, /* 0x35 */ KEY_Tab, /* 0x36 */ KEY_Q, @@ -744,13 +744,13 @@ /* 0x40 */ KEY_LBrace, /* 0x41 */ KEY_RBrace, /* 0x42 */ KEY_Delete, - /* 0x43 */ KEY_NOTUSED, /* compose */ + /* 0x43 */ KEY_Menu, /* compose */ /* 0x44 */ KEY_KP_7, /* 0x45 */ KEY_KP_8, /* 0x46 */ KEY_KP_9, /* 0x47 */ KEY_KP_Minus, - /* 0x48 */ KEY_NOTUSED, /* open */ - /* 0x49 */ KEY_NOTUSED, /* paste */ + /* 0x48 */ KEY_L7, /* open */ + /* 0x49 */ KEY_L8, /* paste */ /* 0x4a */ KEY_End, /* 0x4b */ KEY_NOTUSED, /* 0x4c */ KEY_LCtrl, @@ -772,9 +772,9 @@ /* 0x5c */ KEY_KP_5, /* 0x5d */ KEY_KP_6, /* 0x5e */ KEY_KP_0, - /* 0x5f */ KEY_NOTUSED, /* find */ + /* 0x5f */ KEY_L9, /* find */ /* 0x60 */ KEY_PgUp, - /* 0x61 */ KEY_NOTUSED, /* cut */ + /* 0x61 */ KEY_L10, /* cut */ /* 0x62 */ KEY_NumLock, /* 0x63 */ KEY_ShiftL, /* 0x64 */ KEY_Z, @@ -801,7 +801,7 @@ /* 0x79 */ KEY_Space, /* 0x7a */ KEY_RMeta, /* 0x7b */ KEY_PgDown, - /* 0x7c */ KEY_NOTUSED, + /* 0x7c */ KEY_Less, /* < > on some keyboards */ /* 0x7d */ KEY_KP_Plus, /* 0x7e */ KEY_NOTUSED, /* 0x7f */ KEY_NOTUSED @@ -1044,9 +1044,11 @@ case PCCONS: case PCVT: pKbd->RemapScanCode = ATScancode; + break; #endif #ifdef WSCONS_SUPPORT case WSCONS: + if (!pKbd->isConsole) { switch (pKbd->wsKbdType) { case WSKBD_TYPE_PC_XT: case WSKBD_TYPE_PC_AT: @@ -1061,6 +1063,9 @@ break; #endif #ifdef WSKBD_TYPE_SUN +#ifdef WSKBD_TYPE_SUN5 + case WSKBD_TYPE_SUN5: +#endif case WSKBD_TYPE_SUN: pKbd->scancodeMap = &wsSun; break; @@ -1068,6 +1073,9 @@ default: ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType); } + } else { + pKbd->RemapScanCode = ATScancode; + } break; #endif } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c --- xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c 2004-04-23 21:54:07.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.c 2005-02-01 04:32:38.000000000 +0100 @@ -143,7 +143,7 @@ KbdOn(InputInfoPtr pInfo, int what) { KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; -#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) +#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT) BsdKbdPrivPtr priv = (BsdKbdPrivPtr) pKbd->private; struct termios nTty; #endif @@ -154,7 +154,7 @@ if (pKbd->isConsole) { switch (pKbd->consType) { -#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) +#if defined(SYSCONS_SUPPORT) || defined(PCCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT) case SYSCONS: case PCCONS: case PCVT: @@ -170,7 +170,10 @@ nTty.c_cc[VMIN] = 1; cfsetispeed(&nTty, 9600); cfsetospeed(&nTty, 9600); - tcsetattr(pInfo->fd, TCSANOW, &nTty); + if (tcsetattr(pInfo->fd, TCSANOW, &nTty) < 0) { + xf86Msg(X_ERROR, "KbdOn: tcsetattr: %s\n", + strerror(errno)); + } break; #endif } @@ -197,7 +200,7 @@ "or use for example:\n\n" "Option \"Protocol\" \"wskbd\"\n" "Option \"Device\" \"/dev/wskbd0\"\n" - "\nin your XF86Config(5) file\n"); + "\nin your xorg.conf(5) file\n"); } break; #endif @@ -232,7 +235,7 @@ case WSCONS: option = WSKBD_TRANSLATED; ioctl(xf86Info.consoleFd, WSKBDIO_SETMODE, &option); - tcsetattr(xf86Info.consoleFd, TCSANOW, &(priv->kbdtty)); + tcsetattr(pInfo->fd, TCSANOW, &(priv->kbdtty)); break; #endif } @@ -292,7 +295,7 @@ if ((ModifierSet(ControlMask | AltMask)) || (ModifierSet(ControlMask | AltLangMask))) { - if (VTSwitchEnabled && !xf86Info.vtSysreq) { + if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) { switch (key) { case KEY_F1: case KEY_F2: @@ -318,7 +321,7 @@ } } #ifdef USE_VT_SYSREQ - if (VTSwitchEnabled && xf86Info.vtSysreq) { + if (VTSwitchEnabled && xf86Info.vtSysreq && !xf86Info.dontVTSwitch) { switch (key) { case KEY_F1: case KEY_F2: @@ -380,22 +383,30 @@ } #ifdef WSCONS_SUPPORT + static void WSReadInput(InputInfoPtr pInfo) { KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; struct wscons_event events[64]; - int n, i; + int type; + int blocked, n, i; + if ((n = read( pInfo->fd, events, sizeof(events))) > 0) { n /= sizeof(struct wscons_event); - for (i = 0; i < n; i++) - pKbd->PostEvent(pInfo, events[i].value, - events[i].type == WSCONS_EVENT_KEY_DOWN ? TRUE : FALSE); - } + for (i = 0; i < n; i++) { + type = events[i].type; + if (type == WSCONS_EVENT_KEY_UP || type == WSCONS_EVENT_KEY_DOWN) { + /* It seems better to block SIGIO there */ + blocked = xf86BlockSIGIO(); + pKbd->PostEvent(pInfo, (unsigned int)(events[i].value), + type == WSCONS_EVENT_KEY_DOWN ? TRUE : FALSE); + xf86UnblockSIGIO(blocked); + } + } /* for */ + } } -#endif -#ifdef WSCONS_SUPPORT static void printWsType(char *type, char *devname) { @@ -448,15 +459,14 @@ pKbd->consType = xf86Info.consType; } } else { - pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL); + pInfo->fd = open(s, O_RDONLY | O_NONBLOCK | O_EXCL); if (pInfo->fd == -1) { xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, s); xfree(s); return FALSE; } pKbd->isConsole = FALSE; - /* XXX What is consType here? */ - pKbd->consType = SYSCONS; + pKbd->consType = xf86Info.consType; xfree(s); } @@ -495,6 +505,11 @@ printWsType("Sun", pInfo->name); break; #endif +#ifdef WSKBD_TYPE_SUN5 + case WSKBD_TYPE_SUN5: + xf86Msg(X_PROBED, "Keyboard type: Sun5\n"); + break; +#endif default: xf86Msg(X_ERROR, "%s: Unsupported wskbd type \"%d\"", pInfo->name, pKbd->wsKbdType); @@ -535,4 +550,3 @@ } return TRUE; } - diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c 2003-11-25 20:28:50.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c 2004-12-17 01:53:09.000000000 +0100 @@ -201,32 +201,46 @@ * the chipset scan is to be stopped, or FALSE if the scan is to move on to the * next chipset. */ + Bool -xf86PreScan460GX(void) +xorgProbe460GX(scanpciWrapperOpt flags) { pciBusInfo_t *pBusInfo; PCITAG tag; - CARD32 tmp; - int i, devno; /* Bus zero should already be set up */ if (!(pBusInfo = pciBusInfo[0])) { cbn_460gx = -1; return FALSE; } - /* First look for a 460GX's primary host bridge */ tag = PCI_MAKE_TAG(0, 0x10, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { - cbn_460gx = -1; - return FALSE; + if (pciReadLong(tag, PCI_ID_REG) == DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { + return TRUE; } + cbn_460gx = -1; + + return FALSE; +} + +void +xf86PreScan460GX(void) +{ + pciBusInfo_t *pBusInfo; + PCITAG tag; + CARD32 tmp; + int i, devno; + + if (!(pBusInfo = pciBusInfo[0])) + return; + /* Get CBN (Chipset bus number) */ + tag = PCI_MAKE_TAG(0, 0x10, 0); if (!(cbn_460gx = (unsigned int)pciReadByte(tag, CBN))) { /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } if (pciNumBuses <= cbn_460gx) @@ -242,7 +256,7 @@ if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } /* @@ -257,7 +271,7 @@ DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } if (devno == 0x10) @@ -278,7 +292,7 @@ if (cbdevs_460gx & (1 << devno)) { /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } /* @@ -294,7 +308,7 @@ if (cbdevs_460gx & (1 << devno)) { /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } /* @@ -310,7 +324,7 @@ break; /* Sanity check failed */ cbn_460gx = -1; - return TRUE; + return; } } @@ -337,7 +351,7 @@ break; } - return TRUE; + return; } /* This does some 460GX-related processing after the PCI bus scan */ @@ -423,7 +437,7 @@ if (pPCI->funcnum > 0) break; - if ((pBusInfo = pciBusInfo[busno_460gx[i]])) + if ((pBusInfo == pciBusInfo[busno_460gx[i]])) break; /* Fix bus linkage */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h --- xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h 2003-11-14 17:48:56.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.h 2004-12-15 16:24:45.000000000 +0100 @@ -29,8 +29,10 @@ #define PCI_460GX_H 1 #include <X11/Xdefs.h> +#include <Pci.h> -Bool xf86PreScan460GX(void); +Bool xorgProbe460GX(scanpciWrapperOpt flags); +void xf86PreScan460GX(void); void xf86PostScan460GX(void); #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile --- xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile 2004-08-11 23:14:17.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile 2004-12-15 16:24:45.000000000 +0100 @@ -126,8 +126,8 @@ PCIARCHOBJ = sparcPci.o # endif #elif defined(ia64Architecture) -PCIARCHSRC = ia64Pci.c 460gxPCI.c e8870PCI.c zx1PCI.c -PCIARCHOBJ = ia64Pci.o 460gxPCI.o e8870PCI.o zx1PCI.o +PCIARCHSRC = 460gxPCI.c e8870PCI.c zx1PCI.c +PCIARCHOBJ = 460gxPCI.o e8870PCI.o zx1PCI.o #endif SRCS = Pci.c $(PCIDRVRSRC) $(SBUSDRVSRC) $(PCIARCHSRC) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c 2004-07-30 21:04:14.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c 2004-12-15 06:52:16.000000000 +0100 @@ -954,10 +954,13 @@ pciBusInfo_t *busp; int idx = 0, i; PCITAG tag; + static Bool done = FALSE; - if (pci_devp[0]) + if (done || pci_devp[0]) return pci_devp; + done = TRUE; + pciInit(); #ifdef XF86SCANPCI_WRAPPER diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c 2003-11-25 20:28:50.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c 2004-12-15 16:24:45.000000000 +0100 @@ -34,17 +34,23 @@ #include "Pci.h" Bool -xf86PreScanE8870(void) +xorgProbeE8870(scanpciWrapperOpt flags) { PCITAG tag; /* Look for an E8870's Hub interface */ tag = PCI_MAKE_TAG(0, 0x1E, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_82801_P2P)) - return FALSE; + if (pciReadLong(tag, PCI_ID_REG) == DEVID(VENDOR_INTEL, CHIP_82801_P2P)) + return TRUE; + + return FALSE; +} +void +xf86PreScanE8870(void) +{ /* XXX Fill me in... */ - return TRUE; + return; } void diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h --- xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h 2003-11-14 17:48:56.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.h 2004-12-15 16:24:45.000000000 +0100 @@ -29,8 +29,10 @@ #define PCI_E8870_H 1 #include <X11/Xdefs.h> +#include <Pci.h> -Bool xf86PreScanE8870(void); +Bool xorgProbeE8870(scanpciWrapperOpt flags); +void xf86PreScanE8870(void); void xf86PostScanE8870(void); #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c 2004-07-06 16:49:13.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,61 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c,v 1.3 2003/02/23 20:26:49 tsi Exp $ */ -/* - * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the XFree86 Project shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from the - * XFree86 Project. - */ - -/* - * This file contains the glue needed to support various IA-64 chipsets. - */ - -#include "460gxPCI.h" -#include "e8870PCI.h" -#include "zx1PCI.h" -#include "Pci.h" - -void -ia64ScanPCIWrapper(scanpciWrapperOpt flags) -{ - - if (flags == SCANPCI_INIT) { - - /* PCI configuration space probes should be done first */ - if (xf86PreScan460GX()) - return; - if (xf86PreScanE8870()) - return; -#if 0 - if (xf86PreScanZX1()) - return; -#endif - } else /* if (flags == SCANPCI_TERM) */ { - - xf86PostScan460GX(); - xf86PostScanE8870(); -#if 0 - xf86PostScanZX1(); -#endif - } - -} diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c 2004-07-06 16:37:48.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c 2004-12-15 06:14:44.000000000 +0100 @@ -273,7 +273,7 @@ switch (xf86Info.pciFlags) { case PCIOsConfig: -#if ARCH_PCI_OS_INIT +#ifdef ARCH_PCI_OS_INIT return; #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c 2004-07-06 16:37:48.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c 2004-12-15 06:48:20.000000000 +0100 @@ -113,14 +113,16 @@ if (fd != -1) close(fd); if (bus < 256) { - if (stat("/proc/bus/pci/00", &ignored) < 0) + sprintf(file,"/proc/bus/pci/%02x",bus); + if (stat(file, &ignored) < 0) sprintf(file, "/proc/bus/pci/0000:%02x/%02x.%1x", bus, dev, func); else sprintf(file, "/proc/bus/pci/%02x/%02x.%1x", bus, dev, func); } else { - if (stat("/proc/bus/pci/00", &ignored) < 0) + sprintf(file,"/proc/bus/pci/%04x",bus); + if (stat(file, &ignored) < 0) sprintf(file, "/proc/bus/pci/0000:%04x/%02x.%1x", bus, dev, func); else diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h --- xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h 2004-04-23 21:54:08.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h 2005-02-02 01:59:25.000000000 +0100 @@ -27,6 +27,7 @@ #if defined(linux) #include <asm/types.h> +#include <linux/fb.h> #include <asm/fbio.h> #include <asm/openpromio.h> #elif defined(SVR4) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c --- xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c 2004-01-29 09:08:47.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c 2004-12-15 16:24:45.000000000 +0100 @@ -465,13 +465,7 @@ NULL, /* bridge -- dynamically set */ }; -/* - * This checks for, and validates, the presence of the ZX1 chipset, and sets - * pZX1mio to a non-NULL pointer accordingly. This function is called before - * the server's PCI bus scan and returns TRUE if the chipset scan is to be - * stopped, or FALSE if the scan is to move on to the next chipset. - */ -Bool +void xf86PreScanZX1(void) { resRange range; @@ -491,7 +485,7 @@ mapSize = MIO_SIZE; if (!(pZX1mio = xf86MapVidMem(-1, VIDMEM_MMIO, MIO_BASE, mapSize))) - return FALSE; + return; /* Look for ZX1's SBA and IOC */ /* XXX What about Dino? */ if ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) != @@ -500,7 +494,7 @@ DEVID(VENDOR_HP, CHIP_ZX1_IOC))) { xf86UnMapVidMem(-1, pZX1mio, mapSize); pZX1mio = NULL; - return FALSE; + return; } /* Map rope configuration space */ @@ -510,7 +504,7 @@ !(pZX1ioa = xf86MapVidMem(-1, VIDMEM_MMIO, ioaaddr, IOA_SIZE))) { xf86UnMapVidMem(-1, pZX1mio, mapSize); pZX1mio = NULL; - return TRUE; + return; } for (i = 0; i < 8; i++) { @@ -924,7 +918,7 @@ nRange = 0; - return TRUE; + return; } /* This is called to finalise the results of a PCI bus scan */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h x11r682/xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h --- xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h 2003-11-14 17:48:56.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.h 2004-12-15 16:24:45.000000000 +0100 @@ -30,7 +30,7 @@ #include <X11/Xdefs.h> -Bool xf86PreScanZX1(void); +void xf86PreScanZX1(void); void xf86PostScanZX1(void); #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile x11r682/xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile --- xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile 2004-06-16 11:39:15.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile 2004-12-15 16:24:45.000000000 +0100 @@ -38,27 +38,32 @@ #endif #if defined(AlphaArchitecture) -AXP_SRC=lnx_ev56.c xf86Axp.c lnx_axp.c -AXP_OBJ=lnx_ev56.o xf86Axp.o lnx_axp.o +PLATFORM_SRC=lnx_ev56.c xf86Axp.c lnx_axp.c +PLATFORM_OBJ=lnx_ev56.o xf86Axp.o lnx_axp.o +#endif +#if defined (ia64Architecture) +PLATFORM_SRC=ia64Pci.c lnx_ia64.c +PLATFORM_OBJ=ia64Pci.o lnx_ia64.o +PLATFORM_DEFINES=-DOS_PROBE_PCI_CHIPSET=lnxProbePciChipset #endif SRCS = lnx_init.c lnx_video.c lnx_io.c libc_wrapper.c bios_mmap.c \ VTsw_usl.c std_kbdEv.c posix_tty.c $(MOUSESRC) \ lnx_pci.c vidmem.c lnx_apm.c $(JOYSTICK_SRC) $(DRI_SRC) $(RES_SRCS) \ - $(AXP_SRC) lnx_kmod.c lnx_agp.c $(KBDSRC) /*wcHelper.c*/ + $(PLATFORM_SRC) lnx_kmod.c lnx_agp.c $(KBDSRC) /*wcHelper.c*/ OBJS = lnx_init.o lnx_video.o lnx_io.o libc_wrapper.o bios_mmap.o \ VTsw_usl.o std_kbdEv.o posix_tty.o $(MOUSEOBJ) \ lnx_pci.o vidmem.o lnx_apm.o $(JOYSTICK_OBJ) $(DRI_OBJ) $(RES_OBJS) \ - $(AXP_OBJ) lnx_kmod.o lnx_agp.o $(KBDOBJ) /*wcHelper.o*/ + $(PLATFORM_OBJ) lnx_kmod.o lnx_agp.o $(KBDOBJ) /*wcHelper.o*/ INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \ -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(XF86OSSRC)/shared \ - -I$(DRMSRCDIR)/shared + -I$(XF86OSSRC)/bus -I$(DRMSRCDIR)/shared RESDEFINES = -DUSESTDRES -DEFINES = $(MTRRDEFINES) $(RESDEFINES) -DHAVE_SYSV_IPC +DEFINES = $(MTRRDEFINES) $(RESDEFINES) $(PLATFORM_DEFINES) -DHAVE_SYSV_IPC #if defined(AlphaArchitecture) SpecialObjectRule(lnx_ev56.o, lnx_ev56.c, -mcpu=ev56) @@ -114,6 +119,9 @@ #if defined(AlphaArchitecture) LinkSourceFile(xf86Axp.c,../shared) #endif +#if defined(ia64Architecture) +LinkSourceFile(ia64Pci.c,../shared) +#endif DependTarget() InstallDriverSDKNonExecFile(agpgart.h,$(DRIVERSDKINCLUDEDIR)/linux) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ia64.c 2004-09-15 11:23:59.000000000 +0200 @@ -0,0 +1,45 @@ +/* + * Copyright 2004, Egbert Eich + * + * Permission is hereby granted, free of charge, to 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 + * EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- + * NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Egbert Eich shall not + * be used in advertising or otherwise to promote the sale, use or other deal- + *ings in this Software without prior written authorization from Egbert Eich. + * + */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "ia64Pci.h" +#include "Pci.h" + +#if defined OS_PROBE_PCI_CHIPSET +IA64Chipset OS_PROBE_PCI_CHIPSET(scanpciWrapperOpt flags) +{ + struct stat unused; + + if (!stat("/proc/bus/mckinley/zx1",&unused) + || !stat("/proc/bus/mckinley/zx2",&unused)) + return ZX1_CHIPSET; + + return NONE_CHIPSET; +} +#endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c 2004-04-23 21:54:08.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c 2005-02-02 01:59:25.000000000 +0100 @@ -114,6 +114,8 @@ #endif /* KDKBDREP */ } +#undef rate + static int KIOCSRATE_ioctl_ok(int rate, int delay) { #ifdef KIOCSRATE @@ -141,8 +143,6 @@ #endif /* KIOCSRATE */ } -#undef rate - void xf86SetKbdRepeat(char rad) { #ifdef __sparc__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c 2004-04-23 21:54:08.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c 2005-02-02 01:59:25.000000000 +0100 @@ -142,6 +142,8 @@ #endif /* KDKBDREP */ } +#undef rate + static int KIOCSRATE_ioctl_ok(int rate, int delay) { #ifdef KIOCSRATE @@ -169,8 +171,6 @@ #endif /* KIOCSRATE */ } -#undef rate - static void SetKbdRepeat(InputInfoPtr pInfo, char rad) { @@ -356,7 +356,7 @@ if ((ModifierSet(ControlMask | AltMask)) || (ModifierSet(ControlMask | AltLangMask))) { - if (VTSwitchEnabled && !xf86Info.vtSysreq) { + if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) { switch (key) { case KEY_F1: case KEY_F2: @@ -382,7 +382,7 @@ } } #ifdef USE_VT_SYSREQ - if (VTSwitchEnabled && xf86Info.vtSysreq) { + if (VTSwitchEnabled && xf86Info.vtSysreq && !xf86Info.dontVTSwitch) { switch (key) { case KEY_F1: case KEY_F2: diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c x11r682/xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c --- xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.c 2004-09-15 11:23:59.000000000 +0200 @@ -0,0 +1,81 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ia64Pci.c,v 1.3 2003/02/23 20:26:49 tsi Exp $ */ +/* + * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the XFree86 Project shall + * not be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization from the + * XFree86 Project. + */ + +/* + * This file contains the glue needed to support various IA-64 chipsets. + */ + +#include "460gxPCI.h" +#include "e8870PCI.h" +#include "zx1PCI.h" +#include "Pci.h" +#include "ia64Pci.h" + +void +ia64ScanPCIWrapper(scanpciWrapperOpt flags) +{ + static IA64Chipset chipset = NONE_CHIPSET; + + if (flags == SCANPCI_INIT) { + + /* PCI configuration space probes should be done first */ + if (xorgProbe460GX(flags)) { + chipset = I460GX_CHIPSET; + xf86PreScan460GX(); + return; + } else if (xorgProbeE8870(flags)) { + chipset = E8870_CHIPSET; + xf86PreScanE8870(); + return; + } +#ifdef OS_PROBE_PCI_CHIPSET + chipset = OS_PROBE_PCI_CHIPSET(flags); + switch (chipset) { + case ZX1_CHIPSET: + xf86PreScanZX1(); + return; + default: + return; + } +#endif + } else /* if (flags == SCANPCI_TERM) */ { + + switch (chipset) { + case I460GX_CHIPSET: + xf86PostScan460GX(); + return; + case E8870_CHIPSET: + xf86PostScanE8870(); + return; + case ZX1_CHIPSET: + xf86PostScanZX1(); + return; + default: + return; + } + } +} diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h x11r682/xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h --- xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/shared/ia64Pci.h 2004-12-15 17:03:15.000000000 +0100 @@ -0,0 +1,41 @@ +/* + * Copyright 2004, Egbert Eich + * + * Permission is hereby granted, free of charge, to 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 + * EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- + * NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Egbert Eich shall not + * be used in advertising or otherwise to promote the sale, use or other deal- + *ings in this Software without prior written authorization from Egbert Eich. + * + */ +#ifndef _IA64_PCI_H +# define _IA64_PCI_H + +#include "Pci.h" + +typedef enum { + NONE_CHIPSET, + I460GX_CHIPSET, + E8870_CHIPSET, + ZX1_CHIPSET +} IA64Chipset; + +# ifdef OS_PROBE_PCI_CHIPSET +extern IA64Chipset OS_PROBE_PCI_CHIPSET(scanpciWrapperOpt flags); +# endif +#endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile x11r682/xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile --- xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile 2004-04-23 21:54:13.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile 2005-01-13 02:18:47.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile,v 1.4 2002/10/17 02:22:49 dawes Exp $ -XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile,v 1.2 2004/04/23 19:54:13 eich Exp $ +XCOMM $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/Imakefile,v 1.2.4.2 2005/01/13 01:18:47 gisburn Exp $ XCOMM XCOMM Copyright 2001 The XFree86 Project, Inc. All Rights Reserved. XCOMM @@ -32,16 +32,29 @@ #include <Server.tmpl> -#if !HasGcc && defined(i386Architecture) -#if HasSunC -PROWORKS_INOUT_SRC = solaris-ia32.S -PROWORKS_INOUT_OBJ = solaris-ia32.o +#if !HasGcc +# if HasSunC +# ifdef i386Architecture +# define AsmArch ia32 +# define AsmFlags /**/ +# else +# define AsmArch sparcv8plus +# define AsmFlags -xarch=v8plus +# endif +PROWORKS_ASM_ARCH = AsmArch +PROWORKS_ASM_FLAGS = AsmFlags +PROWORKS_INOUT_SRC = solaris-$(PROWORKS_ASM_ARCH).S +PROWORKS_INOUT_OBJ = solaris-$(PROWORKS_ASM_ARCH).o + +all:: $(PROWORKS_ASM_ARCH).il +includes:: $(PROWORKS_ASM_ARCH).il -includes:: ia32.il +CppFileTarget($(PROWORKS_ASM_ARCH).il,solaris-$(PROWORKS_ASM_ARCH).S,-DINLINE_ASM,NullParameter) -CppFileTarget(ia32.il,solaris-ia32.S,-DINLINE_ASM,NullParameter) -ObjectFromAsmSource(solaris-ia32,NullParameter) -#else +$(PROWORKS_INOUT_OBJ): $(PROWORKS_INOUT_SRC) + $(AS) -P -o $@ $(PROWORKS_ASM_FLAGS) $(PROWORKS_INOUT_SRC) + +#elif defined(i386Architecture) PROWORKS_INOUT_SRC = sun_inout.s PROWORKS_INOUT_OBJ = sun_inout.o #endif @@ -63,6 +76,10 @@ VTSW_OBJ = VTsw_noop.o #endif +#ifdef SVR4Architecture +SYSVIPCDEFINES = -DHAVE_SYSV_IPC +#endif + SRCS = sun_bios.c sun_init.c $(IO_SRC) $(KBD_SRCS) $(PROWORKS_INOUT_SRC) \ sun_mouse.c sun_vid.c agp_noop.c libc_wrapper.c kmod_noop.c pm_noop.c \ posix_tty.c sigiostubs.c stdPci.c stdResource.c $(VTSW_SRC) @@ -74,7 +91,7 @@ -I$(SERVERSRC)/mi -I$(SERVERSRC)/include -I$(SERVERSRC)/Xext \ -I$(XINCLUDESRC) -I$(EXTINCSRC) -DEFINES = -DUSESTDRES +DEFINES = -DUSESTDRES $(VENDOR_DEFINES) $(SYSVIPCDEFINES) SubdirLibraryRule($(OBJS)) NormalLibraryObjectRule() diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S x11r682/xc/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S --- xc/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/Xserver/hw/xfree86/os-support/sunos/solaris-sparcv8plus.S 2005-01-13 02:18:47.000000000 +0100 @@ -0,0 +1,144 @@ +/* Copyright 2004 Sun Microsystems, 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, and/or sell copies of the Software, and to permit persons + * to whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS 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 + * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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. + * + * Except as contained in this notice, the name of a copyright holder + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * of the copyright holder. + */ + +#ifdef INLINE_ASM +#define FUNCTION_START(f,n) .inline f,n +#define FUNCTION_END(f) .end +#else +#define _ASM +#include <sys/asm_linkage.h> +#define FUNCTION_START(f,n) ENTRY(f) +#define FUNCTION_END(f) SET_SIZE(f) +#endif + +/* Converted from common/compiler.h gcc inline format to Sun cc inline + * format by Kenjiro Tsuji + * + * The value 0x88 means ASI_PRIMARY_LITTLE. + * The store or load to/from the address space will be done + * as little-endian. In the original xrog code, the value + * is defined as the macro ASI_PL. + * + * In the original xorg code, "membar #StoreStore|#StoreLoad" + * is directly implemented as an instruction "0x8143e00a". + * + */ + + FUNCTION_START(outb, 0) + stba %o1, [%o0] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(outb) + + FUNCTION_START(outw, 0) + stha %o1, [%o0] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(outw) + + FUNCTION_START(outl, 0) + sta %o1, [%o0] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(outl) + + FUNCTION_START(inb, 0) + lduba [%o0] 0x88, %o0 + FUNCTION_END(inb) + + FUNCTION_START(inw, 0) + lduha [%o0] 0x88, %o0 + FUNCTION_END(inw) + + FUNCTION_START(inl, 0) + lda [%o0] 0x88, %o0 + FUNCTION_END(inl) + + FUNCTION_START(xf86ReadMmio8, 0) + lduba [%o0 + %o1] 0x88, %o0 + FUNCTION_END(xf86ReadMmio8) + + FUNCTION_START(xf86ReadMmio16Be, 0) + lduh [%o0 + %o1], %o0 + FUNCTION_END(xf86ReadMmio16Be) + + FUNCTION_START(xf86ReadMmio16Le, 0) + lduha [%o0 + %o1] 0x88, %o0 + FUNCTION_END(xf86ReadMmio16Le) + + FUNCTION_START(xf86ReadMmio32Be, 0) + ld [%o0 + %o1], %o0 + FUNCTION_END(xf86ReadMmio32Be) + + FUNCTION_START(xf86ReadMmio32Le, 0) + lda [%o0 + %o1] 0x88, %o0 + FUNCTION_END(xf86ReadMmio32Le) + + FUNCTION_START(xf86WriteMmio8, 0) + stba %o2, [%o0 + %o1] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(xf86WriteMmio8) + + FUNCTION_START(xf86WriteMmio16Be, 0) + sth %o2, [%o0 + %o1] + membar #StoreStore|#StoreLoad + FUNCTION_END(xf86WriteMmio16Be) + + FUNCTION_START(xf86WriteMmio16Le, 0) + stha %o2, [%o0 + %o1] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(xf86WriteMmio16Le) + + FUNCTION_START(xf86WriteMmio32Be, 0) + st %o2, [%o0 + %o1] + membar #StoreStore|#StoreLoad + FUNCTION_END(xf86WriteMmio32Be) + + FUNCTION_START(xf86WriteMmio32Le, 0) + sta %o2, [%o0 + %o1] 0x88 + membar #StoreStore|#StoreLoad + FUNCTION_END(xf86WriteMmio32Le) + + FUNCTION_START(xf86WriteMmio8NB, 0) + add %o0, %o1, %o0 + stba %o2, [%o0] 0x88 + FUNCTION_END(xf86WriteMmio8NB) + + FUNCTION_START(xf86WriteMmio16BeNB, 0) + sth %o2, [%o0 + %o1] + FUNCTION_END(xf86WriteMmio16BeNB) + + FUNCTION_START(xf86WriteMmio16LeNB, 0) + stha %o2, [%o0 + %o1] 0x88 + FUNCTION_END(xf86WriteMmio16LeNB) + + FUNCTION_START(xf86WriteMmio32BeNB, 0) + st %o2, [%o0 + %o1] + FUNCTION_END(xf86WriteMmio32BeNB) + + FUNCTION_START(xf86WriteMmio32LeNB, 0) + sta %o2, [%o0 + %o1] 0x88 + FUNCTION_END(xf86WriteMmio32LeNB) + diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/xaa/xaaWrapper.c x11r682/xc/programs/Xserver/hw/xfree86/xaa/xaaWrapper.c --- xc/programs/Xserver/hw/xfree86/xaa/xaaWrapper.c 2004-07-30 23:46:38.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/xaa/xaaWrapper.c 2004-12-17 01:38:21.000000000 +0100 @@ -16,16 +16,14 @@ /* #include "render.h" */ -#if 0 +#if 1 #define COND(pDraw) \ ((pDraw)->depth \ != (xaaWrapperGetScrPriv(((DrawablePtr)(pDraw))->pScreen))->depth) -#endif +#else #define COND(pDraw) 1 - -#if 0 -static Bool xaaWrapperPreCreateGC(GCPtr pGC); #endif + static Bool xaaWrapperCreateGC(GCPtr pGC); static void xaaWrapperValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw); static void xaaWrapperDestroyGC(GCPtr pGC); @@ -36,53 +34,7 @@ static void xaaWrapperCopyClip(GCPtr pgcDst, GCPtr pgcSrc); static void xaaWrapperDestroyClip(GCPtr pGC); -#if 0 -static void xaaWrapperFillSpans(DrawablePtr pDraw, GC *pGC, int nInit, - DDXPointPtr pptInit, int *pwidthInit, int fSorted); -static void xaaWrapperSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc, - DDXPointPtr pptInit, int *pwidthInit, int nspans, - int fSorted); -static void xaaWrapperPutImage(DrawablePtr pDraw, GCPtr pGC, int depth, int x, int y, - int w, int h,int leftPad, int format, char *pImage); -static RegionPtr xaaWrapperCopyPlane(DrawablePtr pSrc, - DrawablePtr pDst, GCPtr pGC,int srcx, int srcy, - int width, int height, int dstx, int dsty, - unsigned long bitPlane); -static void xaaWrapperPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode, int npt, - xPoint *pptInit); -static void xaaWrapperPolylines(DrawablePtr pDraw, GCPtr pGC, int mode, - int npt, DDXPointPtr pptInit); -static void xaaWrapperPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg, - xSegment *pSeg); -static void xaaWrapperPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nRects, - xRectangle *pRects); -static void xaaWrapperPolyArc( DrawablePtr pDraw, GCPtr pGC, int narcs, xArc *parcs); -static void xaaWrapperFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape, - int mode, int count, DDXPointPtr pptInit); -static void xaaWrapperPolyFillRect(DrawablePtr pDraw, GCPtr pGC, int nRectsInit, - xRectangle *pRectsInit); -static RegionPtr xaaWrapperCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GC *pGC, - int srcx, int srcy, int width, int height, - int dstx, int dsty); -static void xaaWrapperPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs, - xArc *parcs); -static int xaaWrapperPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y, int count, - char *chars); -static int xaaWrapperPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y, - int count, unsigned short *chars); -static void xaaWrapperImageText8(DrawablePtr pDraw, GCPtr pGC, int x, - int y, int count, char *chars); -static void xaaWrapperImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y, - int count, unsigned short *chars); -static void xaaWrapperImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int x, int y, - unsigned int nglyph, CharInfoPtr *ppci, - pointer pglyphBase); -static void xaaWrapperPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int x, int y, - unsigned int nglyph, CharInfoPtr *ppci, - pointer pglyphBase); -static void xaaWrapperPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw, - int dx, int dy, int xOrg, int yOrg); -#endif + static void xaaWrapperComposite (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, @@ -145,25 +97,27 @@ real->mem = func; \ } -#if 0 -#define wrap_pre(priv,real,real_func,mem,func) {\ - priv->mem = real->real_func; \ - real->real_func = func; \ -} -#endif - -#define get(priv,real,func,wrap) \ - priv->wrap = real->func; - #define unwrap(priv,real,mem) {\ real->mem = priv->mem; \ } -#if 0 -#define unwrap_pre(priv,real,real_func,mem) {\ - real->real_func = priv->mem; \ +#define cond_wrap(priv,cond,real,mem,wrapmem,func) {\ + if (COND(cond)) \ + priv->wrapmem = real->mem; \ + else \ + priv->mem = real->mem; \ + real->mem = func; \ } -#endif + +#define cond_unwrap(priv,cond,real,mem,wrapmem) {\ + if (COND(cond)) \ + real->mem = priv->wrapmem; \ + else \ + real->mem = priv->mem; \ +} + +#define get(priv,real,func,wrap) \ + priv->wrap = real->func; typedef struct _xaaWrapperGCPriv { GCOps *ops; @@ -210,12 +164,11 @@ xaaWrapperScrPriv(pWin->drawable.pScreen); Bool ret; - unwrap (pScrPriv, pWin->drawable.pScreen, CreateWindow); - if (COND(&pWin->drawable)) - pWin->drawable.pScreen->CreateWindow - = pScrPriv->wrapCreateWindow; + cond_unwrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + CreateWindow, wrapCreateWindow); ret = pWin->drawable.pScreen->CreateWindow(pWin); - wrap(pScrPriv, pWin->drawable.pScreen, CreateWindow, xaaWrapperCreateWindow); + cond_wrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, CreateWindow, + wrapCreateWindow, xaaWrapperCreateWindow); return ret; } @@ -244,11 +197,11 @@ { xaaWrapperScrPriv(pWin->drawable.pScreen); - unwrap (pScrPriv, pWin->drawable.pScreen, WindowExposures); - if (COND(&pWin->drawable)) - pWin->drawable.pScreen->WindowExposures = pScrPriv->wrapWindowExposures; + cond_unwrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + WindowExposures, wrapWindowExposures); pWin->drawable.pScreen->WindowExposures(pWin, prgn, other_exposed); - wrap(pScrPriv, pWin->drawable.pScreen, WindowExposures, xaaWrapperWindowExposures); + cond_wrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + WindowExposures, wrapWindowExposures, xaaWrapperWindowExposures); } static void @@ -258,29 +211,24 @@ switch (what) { case PW_BORDER: - unwrap (pScrPriv, pWin->drawable.pScreen, PaintWindowBorder); - if (COND(&pWin->drawable)) { - pWin->drawable.pScreen->PaintWindowBorder - = pScrPriv->wrapPaintWindowBorder; - XAASync(pWin->drawable.pScreen); - } + cond_unwrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + PaintWindowBorder, wrapPaintWindowBorder); + pWin->drawable.pScreen->PaintWindowBorder (pWin, pRegion, what); - wrap(pScrPriv, pWin->drawable.pScreen, PaintWindowBorder, - xaaWrapperPaintWindow); + cond_wrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + PaintWindowBorder, wrapPaintWindowBorder, + xaaWrapperPaintWindow); break; case PW_BACKGROUND: - unwrap (pScrPriv, pWin->drawable.pScreen, PaintWindowBackground); - if (COND(&pWin->drawable)) { - pWin->drawable.pScreen->PaintWindowBackground - = pScrPriv->wrapPaintWindowBackground; - XAASync(pWin->drawable.pScreen); - } + cond_unwrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + PaintWindowBackground, wrapPaintWindowBackground); + pWin->drawable.pScreen->PaintWindowBackground (pWin, pRegion, what); - wrap(pScrPriv, pWin->drawable.pScreen, PaintWindowBackground, - xaaWrapperPaintWindow); + cond_wrap(pScrPriv, &pWin->drawable, pWin->drawable.pScreen, + PaintWindowBackground, wrapPaintWindowBackground, + xaaWrapperPaintWindow); break; } - } static Bool @@ -378,11 +326,7 @@ get (pScrPriv, pScreen, PaintWindowBorder, wrapPaintWindowBorder); get (pScrPriv, pScreen, PaintWindowBackground, wrapPaintWindowBackground); get (pScrPriv, pScreen, WindowExposures, wrapWindowExposures); -#if 0 - wrap_pre (pScrPriv, pScreen, CreateGC, wrapCreateGC, xaaWrapperPreCreateGC); -#else get (pScrPriv, pScreen, CreateGC, wrapCreateGC); -#endif get (pScrPriv, pScreen, CreateColormap, wrapCreateColormap); get (pScrPriv, pScreen, DestroyColormap, wrapDestroyColormap); get (pScrPriv, pScreen, InstallColormap, wrapInstallColormap); @@ -435,25 +379,6 @@ xaaWrapperCopyClip }; -#if 0 -GCOps xaaWrapperGCOps = { - xaaWrapperFillSpans, xaaWrapperSetSpans, - xaaWrapperPutImage, xaaWrapperCopyArea, - xaaWrapperCopyPlane, xaaWrapperPolyPoint, - xaaWrapperPolylines, xaaWrapperPolySegment, - xaaWrapperPolyRectangle, xaaWrapperPolyArc, - xaaWrapperFillPolygon, xaaWrapperPolyFillRect, - xaaWrapperPolyFillArc, xaaWrapperPolyText8, - xaaWrapperPolyText16, xaaWrapperImageText8, - xaaWrapperImageText16, xaaWrapperImageGlyphBlt, - xaaWrapperPolyGlyphBlt, xaaWrapperPushPixels, -#ifdef NEED_LINEHELPER - NULL, -#endif - {NULL} /* devPrivate */ -}; -#endif - #define XAAWRAPPER_GC_FUNC_PROLOGUE(pGC) \ xaaWrapperGCPriv(pGC); \ unwrap(pGCPriv, pGC, funcs); \ @@ -463,23 +388,6 @@ wrap(pGCPriv, pGC, funcs, &xaaWrapperGCFuncs); \ if (pGCPriv->wrap) wrap(pGCPriv, pGC, ops, pGCPriv->wrapops) -#if 0 -static Bool -xaaWrapperPreCreateGC(GCPtr pGC) -{ - ScreenPtr pScreen = pGC->pScreen; - xaaWrapperScrPriv(pScreen); - xaaWrapperGCPriv(pGC); - Bool ret; - - unwrap_pre (pScrPriv, pScreen, CreateGC, wrapCreateGC); - ret = (*pScreen->CreateGC) (pGC); - wrap_pre (pScrPriv, pScreen, CreateGC, wrapCreateGC, xaaWrapperPreCreateGC); - - return ret; -} -#endif - static Bool xaaWrapperCreateGC(GCPtr pGC) { @@ -572,310 +480,6 @@ XAAWRAPPER_GC_FUNC_EPILOGUE (pGC); } -#if 0 -#define XAAWRAPPER_GC_OP_PROLOGUE(pGC,pDraw) \ -/* xaaWrapperScrPriv(pDraw->pScreen); */\ - xaaWrapperGCPriv(pGC); \ - GCFuncs *oldFuncs = pGC->funcs; \ - unwrap(pGCPriv, pGC, funcs); \ - unwrap(pGCPriv, pGC, ops); \ - -#define XAAWRAPPER_GC_OP_EPILOGUE(pGC,pDraw) \ - wrap(pGCPriv, pGC, funcs, oldFuncs); \ - wrap(pGCPriv, pGC, ops, &xaaWrapperGCOps) - -static void -xaaWrapperFillSpans( - DrawablePtr pDraw, - GC *pGC, - int nInit, - DDXPointPtr pptInit, - int *pwidthInit, - int fSorted -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperSetSpans( - DrawablePtr pDraw, - GCPtr pGC, - char *pcharsrc, - DDXPointPtr pptInit, - int *pwidthInit, - int nspans, - int fSorted -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - - (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, pptInit, - pwidthInit, nspans, fSorted); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - - -static void -xaaWrapperPutImage( - DrawablePtr pDraw, - GCPtr pGC, - int depth, - int x, int y, int w, int h, - int leftPad, - int format, - char *pImage -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h, - leftPad, format, pImage); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static RegionPtr -xaaWrapperCopyArea( - DrawablePtr pSrc, - DrawablePtr pDst, - GC *pGC, - int srcx, int srcy, - int width, int height, - int dstx, int dsty -){ - RegionPtr ret; - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDst); - ret = (*pGC->ops->CopyArea)(pSrc, pDst, - pGC, srcx, srcy, width, height, dstx, dsty); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDst); - - return ret; -} - - -static RegionPtr -xaaWrapperCopyPlane( - DrawablePtr pSrc, - DrawablePtr pDst, - GCPtr pGC, - int srcx, int srcy, - int width, int height, - int dstx, int dsty, - unsigned long bitPlane -){ - RegionPtr ret; - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDst); - ret = (*pGC->ops->CopyPlane)(pSrc, pDst, - pGC, srcx, srcy, width, height, dstx, dsty, bitPlane); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDst); - return ret; -} - -static void -xaaWrapperPolyPoint( - DrawablePtr pDraw, - GCPtr pGC, - int mode, - int npt, - xPoint *pptInit -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolylines( - DrawablePtr pDraw, - GCPtr pGC, - int mode, - int npt, - DDXPointPtr pptInit -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolySegment( - DrawablePtr pDraw, - GCPtr pGC, - int nseg, - xSegment *pSeg - ){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolyRectangle( - DrawablePtr pDraw, - GCPtr pGC, - int nRects, - xRectangle *pRects -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyRectangle)(pDraw, pGC, nRects, pRects); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolyArc( - DrawablePtr pDraw, - GCPtr pGC, - int narcs, - xArc *parcs -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperFillPolygon( - DrawablePtr pDraw, - GCPtr pGC, - int shape, - int mode, - int count, - DDXPointPtr pptInit -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, pptInit); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolyFillRect( - DrawablePtr pDraw, - GCPtr pGC, - int nRectsInit, - xRectangle *pRectsInit -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyFillRect)(pDraw, pGC, nRectsInit, pRectsInit); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolyFillArc( - DrawablePtr pDraw, - GCPtr pGC, - int narcs, - xArc *parcs -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static int -xaaWrapperPolyText8( - DrawablePtr pDraw, - GCPtr pGC, - int x, - int y, - int count, - char *chars -){ - int width; - - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - width = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); - - return width; -} - -static int -xaaWrapperPolyText16( - DrawablePtr pDraw, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars -){ - int width; - - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - width = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); - - return width; -} - -static void -xaaWrapperImageText8( - DrawablePtr pDraw, - GCPtr pGC, - int x, - int y, - int count, - char *chars -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperImageText16( - DrawablePtr pDraw, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperImageGlyphBlt( - DrawablePtr pDraw, - GCPtr pGC, - int x, int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, x, y, nglyph, - ppci, pglyphBase); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPolyGlyphBlt( - DrawablePtr pDraw, - GCPtr pGC, - int x, int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, x, y, nglyph, - ppci, pglyphBase); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} - -static void -xaaWrapperPushPixels( - GCPtr pGC, - PixmapPtr pBitMap, - DrawablePtr pDraw, - int dx, int dy, int xOrg, int yOrg -){ - XAAWRAPPER_GC_OP_PROLOGUE(pGC, pDraw); - (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg); - XAAWRAPPER_GC_OP_EPILOGUE(pGC, pDraw); -} -#endif - #ifdef RENDER static void xaaWrapperComposite (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c x11r682/xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c --- xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c 2004-04-23 21:54:18.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c 2004-12-15 04:10:20.000000000 +0100 @@ -300,7 +300,7 @@ startedx = startx(); if (XF86Config_path == NULL) - XF86Config_path = XtNewString(__XCONFIGFILE__"-4"); + XF86Config_path = XtNewString(__XCONFIGFILE__); if (XkbConfig_path == NULL) { XmuSnprintf(XkbConfig_path_static, sizeof(XkbConfig_path_static), "%s/%s%s", XFree86Dir, XkbConfigDir, XkbConfigFile); @@ -536,9 +536,9 @@ # endif #else # ifdef XF86CONFIGDIR - XF86Config_path = XtNewString(XF86CONFIGDIR "/"__XCONFIGFILE__"-4"); + XF86Config_path = XtNewString(XF86CONFIGDIR "/"__XCONFIGFILE__); # else - XF86Config_path = XtNewString("/etc/X11/"__XCONFIGFILE__"-4"); + XF86Config_path = XtNewString("/etc/X11/"__XCONFIGFILE__); # endif #endif } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h x11r682/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h --- xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h 2004-04-23 21:54:18.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h 2004-12-08 08:02:46.000000000 +0100 @@ -75,7 +75,7 @@ unsigned long num; char * str; double realnum; - Bool bool; + Bool xbool; OptFrequency freq; } ValueUnion; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c x11r682/xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c --- xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c 2004-08-14 01:57:38.000000000 +0200 +++ xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c 2005-02-02 04:38:05.000000000 +0100 @@ -94,7 +94,7 @@ * Chisato Yamauchi(cyamauch@phyas.aichi-edu.ac.jp) */ /* $XConsortium: xf86config.c /main/21 1996/10/28 05:43:57 kaleb $ */ -/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c,v 1.6 2004/08/13 23:57:38 alanc Exp $ */ +/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86config/xorgconfig.c,v 1.6.2.3 2005/02/02 03:38:05 gisburn Exp $ */ #include <stdlib.h> #include <stdio.h> @@ -225,7 +225,7 @@ #endif int config_xkbdisable = 0; char *config_xkbrules; -char *config_xkbmodel = "pc101"; +char *config_xkbmodel = "pc105"; char *config_xkblayout = "us"; char *config_xkbvariant = (char *) 0; char *config_xkboptions = (char *) 0; @@ -679,7 +679,7 @@ static char *xkbmodeltext = "Please select one of the following keyboard types that is the better\n" "description of your keyboard. If nothing really matches,\n" -"choose 1 (Generic 101-key PC)\n\n"; +"choose \"Generic 104-key PC\"\n\n"; static char *xkblayouttext = "Please select the layout corresponding to your keyboard\n"; @@ -2076,7 +2076,7 @@ "# To customise the XKB settings to suit your keyboard, modify the\n" "# lines below (which are the defaults). For example, for a non-U.S.\n" "# keyboard, you will probably want to use:\n" -"# Option \"XkbModel\" \"pc102\"\n" +"# Option \"XkbModel\" \"pc105\"\n" "# If you have a US Microsoft Natural keyboard, you can use:\n" "# Option \"XkbModel\" \"microsoft\"\n" "#\n" @@ -2093,7 +2093,7 @@ "\n" "# These are the default XKB settings for "__XSERVERNAME__"\n" "# Option \"XkbRules\" \""__XKBDEFRULES__"\"\n" -"# Option \"XkbModel\" \"pc101\"\n" +"# Option \"XkbModel\" \"pc105\"\n" "# Option \"XkbLayout\" \"us\"\n" "# Option \"XkbVariant\" \"\"\n" "# Option \"XkbOptions\" \"\"\n" diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/ChangeLog x11r682/xc/programs/Xserver/hw/xwin/ChangeLog --- xc/programs/Xserver/hw/xwin/ChangeLog 2004-08-03 12:12:25.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/ChangeLog 2005-01-13 04:56:06.000000000 +0100 @@ -1,3 +1,133 @@ +2005-01-10 Alexander Gottwald <ago at freedesktop dot org> + + * winkeybd.h + * winkeyhook.c + * winwndproc.c: + Make keyhook feature work in multiwindowmode too + Hook windows keys + +2005-01-06 Alexander Gottwald <ago at freedesktop dot org> + + * winmultiwindowclass.c: + * winmultiwindowwm.c: + Fix crash with non-nullterminated strings (reported by Øyvind Harboe) + +2004-12-27 Alexander Gottwald <ago at freedesktop dot org> + + * winmultiwindowwindow.c: + Bug #1945: Stop unnecessary reordering. (Kensuke Matsuzaki) + +2004-12-14 Alexander Gottwald <ago at freedesktop dot org> + + * InitOutput.c: + * winprocarg.c: + EnumDisplayMonitors is not available on Window NT4 and 95. Resolve + the function dynamicly + +2004-12-08 Alexander Gottwald <ago at freedesktop dot org> + + * InitOutput.c: + * winprocarg.c: + Added support for placing the main window with the @<monitor#>. + Patch by Mark Fisher, small changes by Alexander Gottwald + +2004-12-04 Earle Philhower + + * InitOutput.c: + * win.h: + * wincreatewnd.c: + * winprocarg.c: + Optional position -screen parameter (-screen n WxH+X+Y or + -screen n W H X Y) + +2004-11-24 Alexander Gottwald <ago at freedesktop dot org> + + * winmultiwindowwm.c: + Finally the multiwindow mode defines a default cursor + +2004-11-11 Alexander Gottwald <ago at freedesktop dot org> + + * winconfig.c: + added keyboard layout "French (Switzerland)" + +2004-10-28 Alexander Gottwald <ago at freedesktop dot org> + + * win.h: + add fRetryCreateSurface + * winshaddnl.c (winBltExposedRegionsShadowDDNL): + try to recreate the primary surface if it was lost + * winshaddnl.c (winCreatePrimarySurfaceShadowDDNL): + mark screen to retry creating the primary surface if it failed + +2004-10-23 Alexander Gottwald <ago at freedesktop dot org> + + * winconfig (winConfigFiles): + Simplify /etc/X11/font-dirs parsing + +2004-10-20 Alexander Gottwald <ago at freedesktop dot org> + + * XWin.rc, winresource.h, winwndproc.c: + Add ShowCursor entry to tray menu + +2004-10-20 Alexander Gottwald <ago at freedesktop dot org> + + * Imakefile: + Add ETCX11DIR to DEFINES + * InitOutput.c (InitOutput): + * winconfig.c (winConfigFiles) : + Add entries from /etc/X11/font-dirs to default fontpath + +2004-10-16 Alexander Gottwald <ago at freedesktop dot org> + + * winprocarg.c (winInitializeDefaultScreens, ddxProcessArgument): + * win.h: + Make multiple monitors default for -multiwindow and -mwextwm. + Added a flag to indicate if the user has overridden the multimonitor + settings. (Øyvind Harboe, Alexander Gottwald) + +2004-10-05 Alexander Gottwald <ago at freedesktop dot org> + + * XWin.rc: + Set the dialogstyle to DS_CENTERMOUSE. Dialogs will now popup on the + monitor where the mouse is and not on the center of the whole desktop. + +2004-10-02 Alexander Gottwald <ago at freedesktop dot org> + + * winmouse.c (winMouseProc): + Make sure buttons 1-3 are mouse buttons and wheel events are 4-5 + Document code + Replace ErrorF with appropriate winMsg + use a symbolic name for the wheel event offset + +2004-10-01 Alexander Gottwald <ago at freedesktop dot org> + + * wincreatewnd.c (winCreateBoundingWindowWindowed): + Do not adjust workarea if native windowmanager is used + +2004-09-22 Kensuke Matsuzaki + + * winclipboardthread.c (winClipboardErrorHandler): + * winclipboardwndproc.c (winClipboardWindowProc): + * winclipboardxevents.c (winClipboardFlushXEvents): + Fix clipboard bug with unicode applications. + +2004-09-16 Alexander Gottwald <ago at freedesktop dot org> + + * wincreatewnd.c (winCreateBoundingWindowWindowed): + Remove code which prevented the use from specifying the window + size in nodecoration mode. + +2004-08-26 Chris B <news at sempermax dot com> + + * win.h, winmessages.h: + Add defines for WM_XBUTTON + * winmouse.c (winMouseProc): + Query number of mouse buttons from windows. + * winmultiwindowwndproc.c (winTopLevelWindowProc): + * winwin32rootlesswndproc.c (winMWExtWMWindowProc): + * winwndproc.c (winWindowProc): + Handle WM_XBUTTON messages. + 2004-08-02 Kensuke Matsuzaki * winclipboardthread.c winclipboardwndproc.c: @@ -7,18 +137,18 @@ fUseUnicode, because it don't mean wheather Windows support Unicode or not. -2004-07-31 Alexander Gottwald <ago@freedesktop.org> +2004-07-31 Alexander Gottwald <ago at freedesktop dot org> * win.h: adjust prototype for winInitCmapPrivates to match Egberts change. -2004-07-30 Egbert Eich <eich@freedesktop.org> +2004-07-30 Egbert Eich <eich at freedesktop dot org> * winallpriv.c: (winInitCmapPrivates): test if colormap with index really exists in the list of installed maps before using it. -2004-07-09 Alexander Gottwald <ago@freedesktop.org> +2004-07-09 Alexander Gottwald <ago at freedesktop dot org> * winconfig.c: Add entry for irish layout (ie) * InitOutput.c, winerror.c, winglobals.c: rename g_fUseMsg to @@ -27,38 +157,38 @@ -silent-dup-error to allow silent termination if another instance of XWin was found running -2004-06-27 Alexander Gottwald <ago@freedesktop.org> +2004-06-27 Alexander Gottwald <ago at freedesktop dot org> * winconfig.c: Add entry for us layout. This changes not much but removes a strange error message about the unknown us layout. -2004-06-24 Alexander Gottwald <ago@freedesktop.org> +2004-06-24 Alexander Gottwald <ago at freedesktop dot org> * InitOutput.c: Check for textmode mounted /tmp and print a warning -2004-06-15 Harold Hunt <huntharo@msu.edu> +2004-06-15 Harold Hunt <huntharo at msu dot edu> * windialogs.c: Fix path to locally installed changelog for the About dialog box. -2004-05-27 Alexander Gottwald <ago@freedesktop.org> +2004-05-27 Alexander Gottwald <ago at freedesktop dot org> * winpriv.c: Create win32 window if not already created * winmultiwindowwindow.c: Export winCreateWindowWindow -2004-05-27 Alexander Gottwald <ago@freedesktop.org> +2004-05-27 Alexander Gottwald <ago at freedesktop dot org> * win.h: Allow CYGDEBUG to defined in the Makefile * winwindow.h: Allow CYGWINDOWING_DEBUG to defined in the Makefile -2004-05-19 Alexander Gottwald <ago@freedesktop.org> +2004-05-19 Alexander Gottwald <ago at freedesktop dot org> * winmultiwindowicons.c (winInitGlobalIcons): Load the small default icon too * winprefs.h, winprefs.c (winOverrideDefaultIcon): Takes the iconsize as parameter -2004-05-19 Alexander Gottwald <ago@freedesktop.org> +2004-05-19 Alexander Gottwald <ago at freedesktop dot org> * win.h, winmultiwindowicons.c (winXIconToHICON): Takes iconsize as parameter @@ -83,14 +213,14 @@ winwin32rootless.c (winMWExtWMDestroyFrame): Use winDestroyIcon to free the icon without destroying the global icon. -2004-05-17 Alexander Gottwald <ago@freedesktop.org> +2004-05-17 Alexander Gottwald <ago at freedesktop dot org> * windialogs.c (winExitDlgProc, winAboutDlgProc), winmultiwindowwndproc.c (winTopLevelWindowProc), winwndproc.c (winWindowProc): Check if g_fSoftwareCursor is set before calling ShowCursor. -2004-05-09 Dan Wilks <Dan_Wilks@intuit.com> +2004-05-09 Dan Wilks <Dan_Wilks at intuit dot com> * winclipboard.h: Add extern prototypes for winDebug, winErrorFVerb copied from winmsg.h. diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/Imakefile x11r682/xc/programs/Xserver/hw/xwin/Imakefile --- xc/programs/Xserver/hw/xwin/Imakefile 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/Imakefile 2004-12-15 20:22:53.000000000 +0100 @@ -263,7 +263,7 @@ VENDOR_DEFINES = $(VENDOR_STRING) $(VENDOR_CONTACT) $(VERSION_STRING) DEFINES = $(OS_DEFINES) $(SHMDEF) $(MMAPDEF) \ - -DPROJECTROOT="\"$(PROJECTROOT)\"" + -DPROJECTROOT="\"$(PROJECTROOT)\"" -DETCX11DIR="\"$(ETCX11DIR)\"" LinkSourceFile(stubs.c,$(SERVERSRC)/Xi) SpecialCObjectRule(stubs,$(ICONFIGFILES),$(EXT_DEFINES)) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/InitOutput.c x11r682/xc/programs/Xserver/hw/xwin/InitOutput.c --- xc/programs/Xserver/hw/xwin/InitOutput.c 2004-07-27 11:53:14.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/InitOutput.c 2004-12-15 20:22:53.000000000 +0100 @@ -30,9 +30,7 @@ #include "win.h" #include "winmsg.h" -#ifdef XWIN_XF86CONFIG #include "winconfig.h" -#endif #include "winprefs.h" #include "X11/Xlocale.h" #include <mntent.h> @@ -437,9 +435,15 @@ "\tSpecify an optional refresh rate to use in fullscreen mode\n" "\twith a DirectDraw engine.\n"); - ErrorF ("-screen scr_num [width height]\n" + ErrorF ("-screen scr_num [width height [x y] | [[WxH[+X+Y]][@m]] ]\n" "\tEnable screen scr_num and optionally specify a width and\n" - "\theight for that screen.\n"); + "\theight and initial position for that screen. Additionally\n" + "\ta monitor number can be specified to start the server on,\n" + "\tat which point, all coordinates become relative to that\n" + "\tmonitor (Not for Windows NT4 and 95). Examples:\n" + "\t -screen 0 800x600+100+100@2 ; 2nd monitor offset 100,100 size 800x600\n" + "\t -screen 0 1024x768@3 ; 3rd monitor size 1024x768\n" + "\t -screen 0 @1 ; on 1st monitor using its full resolution (the default)\n"); ErrorF ("-lesspointer\n" "\tHide the windows mouse pointer when it is over an inactive\n" @@ -635,6 +639,7 @@ winMsg(X_INFO, "XF86Config is not supported\n"); winMsg(X_INFO, "See http://x.cygwin.com/docs/faq/cygwin-x-faq.html " "for more information\n"); + winConfigFiles (); #endif /* Load preferences from XWinrc file */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/XWin.rc x11r682/xc/programs/Xserver/hw/xwin/XWin.rc --- xc/programs/Xserver/hw/xwin/XWin.rc 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/XWin.rc 2004-12-15 20:22:53.000000000 +0100 @@ -37,7 +37,7 @@ /* About */ ABOUT_BOX DIALOG DISCARDABLE 32, 32, 240, 105 -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTER +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE CAPTION "About Cygwin/X" FONT 8, "MS Sans Serif" BEGIN @@ -59,7 +59,7 @@ /* Depth change */ DEPTH_CHANGE_BOX DIALOG DISCARDABLE 32, 32, 180, 100 -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | DS_CENTER +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | DS_CENTERMOUSE FONT 8, "MS Sans Serif" CAPTION "Cygwin/X" BEGIN @@ -73,7 +73,7 @@ /* Exit */ EXIT_DIALOG DIALOG DISCARDABLE 32, 32, 180, 78 -STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTER +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE FONT 8, "MS Sans Serif" CAPTION "Cygwin/X - Exit?" BEGIN @@ -94,6 +94,7 @@ POPUP "TRAYICON_MENU" BEGIN MENUITEM "&Hide Root Window", ID_APP_HIDE_ROOT + MENUITEM "Show Cursor", ID_APP_SHOWCURSOR MENUITEM "&About...", ID_APP_ABOUT MENUITEM SEPARATOR MENUITEM "E&xit", ID_APP_EXIT diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/win.h x11r682/xc/programs/Xserver/hw/xwin/win.h --- xc/programs/Xserver/hw/xwin/win.h 2004-07-31 20:33:56.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/win.h 2004-12-15 20:22:53.000000000 +0100 @@ -48,6 +48,17 @@ #define CYGDEBUG NO #endif +/* WM_XBUTTON Messages. They should go into w32api. */ +#ifndef WM_XBUTTONDOWN +# define WM_XBUTTONDOWN 523 +#endif +#ifndef WM_XBUTTONUP +# define WM_XBUTTONUP 524 +#endif +#ifndef WM_XBUTTONDBLCLK +# define WM_XBUTTONDBLCLK 525 +#endif + #define NEED_EVENTS #define WIN_DEFAULT_BPP 0 @@ -384,6 +395,11 @@ DWORD dwHeight_mm; DWORD dwPaddedWidth; + /* Did the user specify a screen position? */ + Bool fUserGavePosition; + DWORD dwInitialX; + DWORD dwInitialY; + /* * dwStride is the number of whole pixels that occupy a scanline, * including those pixels that are not displayed. This is basically @@ -414,6 +430,9 @@ #ifdef XWIN_MULTIWINDOW Bool fMultiWindow; #endif +#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) + Bool fMultiMonitorOverride; +#endif Bool fMultipleMonitors; Bool fLessPointer; Bool fScrollbars; @@ -497,6 +516,7 @@ LPDIRECTDRAW4 pdd4; LPDIRECTDRAWSURFACE4 pddsShadow4; LPDIRECTDRAWSURFACE4 pddsPrimary4; + BOOL fRetryCreateSurface; /* Privates used by both shadow fb DirectDraw servers */ LPDIRECTDRAWCLIPPER pddcPrimary; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winclipboardthread.c x11r682/xc/programs/Xserver/hw/xwin/winclipboardthread.c --- xc/programs/Xserver/hw/xwin/winclipboardthread.c 2004-08-03 12:12:25.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winclipboardthread.c 2004-12-15 20:22:53.000000000 +0100 @@ -429,8 +429,12 @@ pErr->error_code, pszErrorMsg, sizeof (pszErrorMsg)); - ErrorF ("winClipboardErrorHandler - ERROR: \n\t%s\n", pszErrorMsg); - + ErrorF ("winClipboardErrorHandler - ERROR: \n\t%s\n" + "\tSerial: %d, Request Code: %d, Minor Code: %d\n", + pszErrorMsg, + pErr->serial, + pErr->request_code, + pErr->minor_code); return 0; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winclipboardwndproc.c x11r682/xc/programs/Xserver/hw/xwin/winclipboardwndproc.c --- xc/programs/Xserver/hw/xwin/winclipboardwndproc.c 2004-08-03 12:12:25.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winclipboardwndproc.c 2004-12-15 20:22:53.000000000 +0100 @@ -44,6 +44,7 @@ */ extern Bool g_fUseUnicode; +extern Bool g_fUnicodeSupport; extern void *g_pClipboardDisplay; extern Window g_iClipboardWindow; extern Atom g_atomLastOwnedSelection; @@ -445,7 +446,7 @@ if (message == WM_RENDERALLFORMATS) fConvertToUnicode = FALSE; else - fConvertToUnicode = g_fUseUnicode && (CF_UNICODETEXT == wParam); + fConvertToUnicode = g_fUnicodeSupport && (CF_UNICODETEXT == wParam); /* Request the selection contents */ iReturn = XConvertSelection (pDisplay, @@ -521,10 +522,9 @@ if (WIN_XEVENTS_NOTIFY != iReturn) { /* Paste no data, to satisfy required call to SetClipboardData */ - if (fConvertToUnicode) + if (g_fUnicodeSupport) SetClipboardData (CF_UNICODETEXT, NULL); - else - SetClipboardData (CF_TEXT, NULL); + SetClipboardData (CF_TEXT, NULL); } /* Special handling for WM_RENDERALLFORMATS */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winclipboardxevents.c x11r682/xc/programs/Xserver/hw/xwin/winclipboardxevents.c --- xc/programs/Xserver/hw/xwin/winclipboardxevents.c 2004-08-03 12:12:25.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winclipboardxevents.c 2004-12-15 20:22:53.000000000 +0100 @@ -135,8 +135,8 @@ iReturn = XChangeProperty (pDisplay, event.xselectionrequest.requestor, event.xselectionrequest.property, - event.xselectionrequest.target, - sizeof (atomTargetArr[0]), + XA_ATOM, + 32, PropModeReplace, (unsigned char *) atomTargetArr, (sizeof (atomTargetArr) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winconfig.c x11r682/xc/programs/Xserver/hw/xwin/winconfig.c --- xc/programs/Xserver/hw/xwin/winconfig.c 2004-07-27 11:53:14.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winconfig.c 2004-12-15 20:22:53.000000000 +0100 @@ -247,6 +247,7 @@ { 0x40b, -1, "pc105", "fi", NULL, NULL, "Finnish"}, { 0x40c, -1, "pc105", "fr", NULL, NULL, "French (Standard)"}, { 0x80c, -1, "pc105", "be", NULL, NULL, "French (Belgian)"}, + { 0x100c, -1, "pc105", "fr_CH", NULL, NULL, "French (Switzerland)"}, { 0x410, -1, "pc105", "it", NULL, NULL, "Italian"}, { 0x411, 7, "jp106", "jp", NULL, NULL, "Japanese"}, { 0x813, -1, "pc105", "be", NULL, NULL, "Dutch (Belgian)"}, @@ -730,6 +731,127 @@ return TRUE; } +#else +Bool +winConfigFiles () +{ + MessageType from; + + /* Fontpath */ + from = X_DEFAULT; + + if (g_cmdline.fontPath) + { + from = X_CMDLINE; + defaultFontPath = g_cmdline.fontPath; + } + else + { + /* Open fontpath configuration file */ + FILE *fontdirs = fopen(ETCX11DIR "/font-dirs", "rt"); + if (fontdirs != NULL) + { + char buffer[256]; + int needs_sep = TRUE; + int comment_block = FALSE; + + /* get defautl fontpath */ + char *fontpath = xstrdup(defaultFontPath); + size_t size = strlen(fontpath); + + /* read all lines */ + while (!feof(fontdirs)) + { + size_t blen; + char *hashchar; + char *str; + int has_eol = FALSE; + + /* read one line */ + str = fgets(buffer, sizeof(buffer), fontdirs); + if (str == NULL) /* stop on error or eof */ + break; + + if (strchr(str, '\n') != NULL) + has_eol = TRUE; + + /* check if block is continued comment */ + if (comment_block) + { + /* ignore all input */ + *str = 0; + blen = 0; + if (has_eol) /* check if line ended in this block */ + comment_block = FALSE; + } + else + { + /* find comment character. ignore all trailing input */ + hashchar = strchr(str, '#'); + if (hashchar != NULL) + { + *hashchar = 0; + if (!has_eol) /* mark next block as continued comment */ + comment_block = TRUE; + } + } + + /* strip whitespaces from beginning */ + while (*str == ' ' || *str == '\t') + str++; + + /* get size, strip whitespaces from end */ + blen = strlen(str); + while (blen > 0 && (str[blen-1] == ' ' || + str[blen-1] == '\t' || str[blen-1] == '\n')) + { + str[--blen] = 0; + } + + /* still something left to add? */ + if (blen > 0) + { + size_t newsize = size + blen; + /* reserve one character more for ',' */ + if (needs_sep) + newsize++; + + /* allocate memory */ + if (fontpath == NULL) + fontpath = malloc(newsize+1); + else + fontpath = realloc(fontpath, newsize+1); + + /* add separator */ + if (needs_sep) + { + fontpath[size] = ','; + size++; + needs_sep = FALSE; + } + + /* mark next line as new entry */ + if (has_eol) + needs_sep = TRUE; + + /* add block */ + strncpy(fontpath + size, str, blen); + fontpath[newsize] = 0; + size = newsize; + } + } + + /* cleanup */ + fclose(fontdirs); + from = X_CONFIG; + defaultFontPath = xstrdup(fontpath); + free(fontpath); + } + } + winMsg (from, "FontPath set to \"%s\"\n", defaultFontPath); + + return TRUE; +} #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/wincreatewnd.c x11r682/xc/programs/Xserver/hw/xwin/wincreatewnd.c --- xc/programs/Xserver/hw/xwin/wincreatewnd.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/wincreatewnd.c 2004-12-15 20:22:53.000000000 +0100 @@ -142,6 +142,8 @@ winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; int iWidth = pScreenInfo->dwUserWidth; int iHeight = pScreenInfo->dwUserHeight; + int iPosX; + int iPosY; HWND *phwnd = &pScreenPriv->hwndScreen; WNDCLASS wc; RECT rcClient, rcWorkArea; @@ -193,6 +195,18 @@ /* Adjust for auto-hide taskbars */ winAdjustForAutoHide (&rcWorkArea); + /* Did the user specify a position? */ + if (pScreenInfo->fUserGavePosition) + { + iPosX = pScreenInfo->dwInitialX; + iPosY = pScreenInfo->dwInitialY; + } + else + { + iPosX = rcWorkArea.left; + iPosY = rcWorkArea.top; + } + /* Did the user specify a height and width? */ if (pScreenInfo->fUserGaveHeightAndWidth) { @@ -240,24 +254,6 @@ + GetSystemMetrics (SM_CYCAPTION); } } - else - { - /* - * User gave a width and height but also said no decoration. - * In this case we have to ignore the requested width and height - * and instead use the largest possible window that we can. - */ - if (pScreenInfo->fMultipleMonitors) - { - iWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN); - iHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN); - } - else - { - iWidth = GetSystemMetrics (SM_CXSCREEN); - iHeight = GetSystemMetrics (SM_CYSCREEN); - } - } } else { @@ -289,20 +285,30 @@ /* We cannot have scrollbars if we do not have a window border */ pScreenInfo->fScrollbars = FALSE; } + + if (TRUE +#ifdef XWIN_MULTIWINDOWEXTWM + && !pScreenInfo->fMWExtWM +#endif +#ifdef XWIN_MULTIWINDOW + && !pScreenInfo->fMultiWindow +#endif + ) + { + /* Trim window width to fit work area */ + if (iWidth > (rcWorkArea.right - rcWorkArea.left)) + iWidth = rcWorkArea.right - rcWorkArea.left; - /* Trim window width to fit work area */ - if (iWidth > (rcWorkArea.right - rcWorkArea.left)) - iWidth = rcWorkArea.right - rcWorkArea.left; - - /* Trim window height to fit work area */ - if (iHeight >= (rcWorkArea.bottom - rcWorkArea.top)) - iHeight = rcWorkArea.bottom - rcWorkArea.top; + /* Trim window height to fit work area */ + if (iHeight >= (rcWorkArea.bottom - rcWorkArea.top)) + iHeight = rcWorkArea.bottom - rcWorkArea.top; #if CYGDEBUG - winDebug ("winCreateBoundingWindowWindowed - Adjusted width: %d "\ - "height: %d\n", - iWidth, iHeight); + winDebug ("winCreateBoundingWindowWindowed - Adjusted width: %d "\ + "height: %d\n", + iWidth, iHeight); #endif + } /* Set display and screen-specific tooltip text */ if (g_pszQueryHost != NULL) @@ -322,8 +328,8 @@ WINDOW_CLASS, /* Class name */ szTitle, /* Window name */ dwWindowStyle, - rcWorkArea.left, /* Horizontal position */ - rcWorkArea.top, /* Vertical position */ + iPosX, /* Horizontal position */ + iPosY, /* Vertical position */ iWidth, /* Right edge */ iHeight, /* Bottom edge */ (HWND) NULL, /* No parent or owner window */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winkeybd.h x11r682/xc/programs/Xserver/hw/xwin/winkeybd.h --- xc/programs/Xserver/hw/xwin/winkeybd.h 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winkeybd.h 2005-01-13 04:56:07.000000000 +0100 @@ -140,9 +140,9 @@ /* 88 */ 0, 0, 0, /* 89 */ 0, 0, 0, /* 90 */ 0, 0, 0, - /* 91 */ 0, 0, 0, - /* 92 */ 0, 0, 0, - /* 93 */ 0, 0, 0, + /* 91 */ VK_LWIN, KEY_LMeta, 0, + /* 92 */ VK_RWIN, KEY_RMeta, 0, + /* 93 */ VK_APPS, KEY_Menu, 0, /* 94 */ 0, 0, 0, /* 95 */ 0, 0, 0, /* 96 */ 0, 0, 0, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winkeyhook.c x11r682/xc/programs/Xserver/hw/xwin/winkeyhook.c --- xc/programs/Xserver/hw/xwin/winkeyhook.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winkeyhook.c 2005-01-13 04:56:07.000000000 +0100 @@ -65,6 +65,7 @@ { BOOL fPassKeystroke = FALSE; PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam; + HWND hwnd = GetActiveWindow(); /* Pass keystrokes on to our main message loop */ if (iCode == HC_ACTION) @@ -79,9 +80,7 @@ case WM_KEYUP: case WM_SYSKEYUP: fPassKeystroke = ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) -#if 0 || (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN) -#endif ; break; } @@ -107,7 +106,7 @@ lParamKey = lParamKey | (0x80000000 & ((p->flags & LLKHF_UP) << 24)); /* Send message to our main window that has the keyboard focus */ - PostMessage (g_hwndKeyboardFocus, + PostMessage (hwnd, (UINT) wParam, (WPARAM) p->vkCode, lParamKey); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmessages.h x11r682/xc/programs/Xserver/hw/xwin/winmessages.h --- xc/programs/Xserver/hw/xwin/winmessages.h 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmessages.h 2004-12-15 20:22:53.000000000 +0100 @@ -523,9 +523,9 @@ "WM_MBUTTONUP", "WM_MBUTTONDBLCLK", "WM_MOUSEWHEEL", - "523", - "524", - "525", + "WM_XBUTTONDOWN", + "WM_XBUTTONUP", + "WM_XBUTTONDBLCLK", "526", "527", "WM_PARENTNOTIFY", diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmouse.c x11r682/xc/programs/Xserver/hw/xwin/winmouse.c --- xc/programs/Xserver/hw/xwin/winmouse.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmouse.c 2004-12-15 20:22:53.000000000 +0100 @@ -64,23 +64,44 @@ int winMouseProc (DeviceIntPtr pDeviceInt, int iState) { - CARD8 map[6]; + int lngMouseButtons, i; + int lngWheelEvents = 2; + CARD8 *map; DevicePtr pDevice = (DevicePtr) pDeviceInt; switch (iState) { case DEVICE_INIT: - map[1] = 1; - map[2] = 2; - map[3] = 3; - map[4] = 4; - map[5] = 5; + /* Get number of mouse buttons */ + lngMouseButtons = GetSystemMetrics(SM_CMOUSEBUTTONS); + + /* Mapping of windows events to X events: + * LEFT:1 MIDDLE:2 RIGHT:3 + * SCROLL_UP:4 SCROLL_DOWN:5 + * XBUTTON 1:6 XBUTTON 2:7 ... + * + * To map scroll wheel correctly we need at least the 3 normal buttons + */ + if (lngMouseButtons < 3) + lngMouseButtons = 3; + winMsg(X_PROBED, "%d mouse buttons found\n", lngMouseButtons); + + /* allocate memory: + * number of buttons + 2x mouse wheel event + 1 extra (offset for map) + */ + map = malloc(sizeof(CARD8) * (lngMouseButtons + lngWheelEvents + 1)); + + /* initalize button map */ + map[0] = 0; + for (i=1; i <= lngMouseButtons + lngWheelEvents; i++) + map[i] = i; InitPointerDeviceStruct (pDevice, map, - 5, /* Buttons 4 and 5 are mouse wheel events */ + lngMouseButtons + lngWheelEvents, miPointerGetMotionEvents, winMouseCtrl, miPointerGetMotionBufferSize ()); + free(map); #if defined(XFree86Server) && defined(XINPUT) g_winMouseButtonMap = pDeviceInt->button->map; diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmultiwindowclass.c x11r682/xc/programs/Xserver/hw/xwin/winmultiwindowclass.c --- xc/programs/Xserver/hw/xwin/winmultiwindowclass.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmultiwindowclass.c 2005-01-13 04:56:07.000000000 +0100 @@ -175,7 +175,7 @@ && prop->format == 8 && prop->data) { - len_role= strlen ((char *) prop->data); + len_role= prop->size; (*res_role) = malloc (len_role + 1); @@ -185,7 +185,8 @@ return 0; } - strcpy ((*res_role), prop->data); + strncpy ((*res_role), prop->data, len_role); + (*res_role)[len_role] = 0; return 1; } @@ -299,7 +300,7 @@ && prop->type == XA_STRING && prop->data) { - len_name = strlen ((char *) prop->data); + len_name = prop->size; (*wmName) = malloc (len_name + 1); @@ -309,8 +310,8 @@ return 0; } - /* Add one to len_name to allow copying of trailing 0 */ - strncpy ((*wmName), prop->data, len_name+1); + strncpy ((*wmName), prop->data, len_name); + (*wmName)[len_name] = 0; return 1; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmultiwindowwindow.c x11r682/xc/programs/Xserver/hw/xwin/winmultiwindowwindow.c --- xc/programs/Xserver/hw/xwin/winmultiwindowwindow.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmultiwindowwindow.c 2005-01-13 04:56:07.000000000 +0100 @@ -394,7 +394,8 @@ * Calling winReorderWindowsMultiWindow here means our window manager * (i.e. Windows Explorer) has initiative to determine Z order. */ - winReorderWindowsMultiWindow (); + if (pWin->nextSib != pOldNextSib) + winReorderWindowsMultiWindow (); #else /* Bail out if no window privates or window handle is invalid */ if (!pWinPriv || !pWinPriv->hWnd) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmultiwindowwm.c x11r682/xc/programs/Xserver/hw/xwin/winmultiwindowwm.c --- xc/programs/Xserver/hw/xwin/winmultiwindowwm.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmultiwindowwm.c 2005-01-13 04:56:07.000000000 +0100 @@ -43,6 +43,7 @@ #include <X11/Xlocale.h> #include <X11/Xproto.h> #include <X11/Xutil.h> +#include <X11/cursorfont.h> /* Fixups to prevent collisions between Windows and X headers */ #define ATOM DWORD @@ -180,7 +181,6 @@ static Bool g_shutdown = FALSE; static Bool redirectError = FALSE; - /* * PushMessage - Push a message onto the queue */ @@ -405,7 +405,10 @@ /* */ if (xtpName.value) { - *ppName = strdup ((char*)xtpName.value); + int size = xtpName.nitems * (xtpName.format >> 3); + *ppName = malloc(size + 1); + strncpy(*ppName, xtpName.value, size); + (*ppName)[size] = 0; XFree (xtpName.value); } @@ -1184,6 +1187,16 @@ pWMInfo->atmPrivMap = XInternAtom (pWMInfo->pDisplay, WIN_HWND_CACHE, False); + + + if (1) { + Cursor cursor = XCreateFontCursor (pWMInfo->pDisplay, XC_left_ptr); + if (cursor) + { + XDefineCursor (pWMInfo->pDisplay, DefaultRootWindow(pWMInfo->pDisplay), cursor); + XFreeCursor (pWMInfo->pDisplay, cursor); + } + } } diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c x11r682/xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c --- xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winmultiwindowwndproc.c 2004-12-15 20:22:53.000000000 +0100 @@ -628,6 +628,16 @@ break; return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button3, wParam); + case WM_XBUTTONDBLCLK: + case WM_XBUTTONDOWN: + if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) + break; + return winMouseButtonsHandle (s_pScreen, ButtonPress, HIWORD(wParam) + 5, wParam); + case WM_XBUTTONUP: + if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) + break; + return winMouseButtonsHandle (s_pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam); + case WM_MOUSEWHEEL: #if CYGMULTIWINDOW_DEBUG ErrorF ("winTopLevelWindowProc - WM_MOUSEWHEEL\n"); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winprocarg.c x11r682/xc/programs/Xserver/hw/xwin/winprocarg.c --- xc/programs/Xserver/hw/xwin/winprocarg.c 2004-07-27 11:53:14.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winprocarg.c 2004-12-15 20:22:53.000000000 +0100 @@ -52,6 +52,55 @@ extern Bool g_fSoftwareCursor; extern Bool g_fSilentDupError; +/* globals required by callback function for monitor information */ +struct GetMonitorInfoData { + int requestedMonitor; + int monitorNum; + Bool bUserSpecifiedMonitor; + Bool bMonitorSpecifiedExists; + int monitorOffsetX; + int monitorOffsetY; + int monitorHeight; + int monitorWidth; +}; + +typedef BOOL (*ENUMDISPLAYMONITORSPROC)(HDC,LPCRECT,MONITORENUMPROC,LPARAM); +ENUMDISPLAYMONITORSPROC _EnumDisplayMonitors; + +BOOL CALLBACK getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data); + +Bool QueryMonitor(int index, struct GetMonitorInfoData *data) +{ + /* Load EnumDisplayMonitors from DLL */ + HMODULE user32; + FARPROC func; + user32 = LoadLibrary("user32.dll"); + if (user32 == NULL) + { + winW32Error(2, "Could not open user32.dll"); + return FALSE; + } + func = GetProcAddress(user32, "EnumDisplayMonitors"); + if (func == NULL) + { + winW32Error(2, "Could not resolve EnumDisplayMonitors: "); + return FALSE; + } + _EnumDisplayMonitors = (ENUMDISPLAYMONITORSPROC)func; + + /* prepare data */ + if (data == NULL) + return FALSE; + memset(data, 0, sizeof(*data)); + data->requestedMonitor = index; + + /* query information */ + _EnumDisplayMonitors(NULL, NULL, getMonitorInfo, (LPARAM) data); + + /* cleanup */ + FreeLibrary(user32); + return TRUE; +} /* * Function prototypes @@ -70,7 +119,6 @@ void winInitializeDefaultScreens (void); - /* * Process arguments on the command line */ @@ -112,6 +160,7 @@ g_ScreenInfo[i].dwUserHeight = dwHeight; g_ScreenInfo[i].fUserGaveHeightAndWidth = WIN_DEFAULT_USER_GAVE_HEIGHT_AND_WIDTH; + g_ScreenInfo[i].fUserGavePosition = FALSE; g_ScreenInfo[i].dwBPP = WIN_DEFAULT_BPP; g_ScreenInfo[i].dwClipUpdatesNBoxes = WIN_DEFAULT_CLIP_UPDATES_NBOXES; #ifdef XWIN_EMULATEPSEUDO @@ -128,6 +177,9 @@ #ifdef XWIN_MULTIWINDOW g_ScreenInfo[i].fMultiWindow = FALSE; #endif +#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM) + g_ScreenInfo[i].fMultiMonitorOverride = FALSE; +#endif g_ScreenInfo[i].fMultipleMonitors = FALSE; g_ScreenInfo[i].fLessPointer = FALSE; g_ScreenInfo[i].fScrollbars = FALSE; @@ -247,7 +299,8 @@ { int iArgsProcessed = 1; int nScreenNum; - int iWidth, iHeight; + int iWidth, iHeight, iX, iY; + int iMonitor; #if CYGDEBUG winDebug ("ddxProcessArgument - screen - argc: %d i: %d\n", @@ -272,8 +325,41 @@ return 0; } + /* look for @m where m is monitor number */ + if (i + 2 < argc + && 1 == sscanf(argv[i + 2], "@%d", (int *) &iMonitor)) + { + struct GetMonitorInfoData data; + if (!QueryMonitor(iMonitor, &data)) + { + ErrorF ("ddxProcessArgument - screen - " + "Querying monitors is not supported on NT4 and Win95\n"); + } else if (data.bMonitorSpecifiedExists == TRUE) + { + winErrorFVerb(2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor); + iArgsProcessed = 3; + g_ScreenInfo[nScreenNum].fUserGaveHeightAndWidth = FALSE; + g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE; + g_ScreenInfo[nScreenNum].dwWidth = data.monitorWidth; + g_ScreenInfo[nScreenNum].dwHeight = data.monitorHeight; + g_ScreenInfo[nScreenNum].dwUserWidth = data.monitorWidth; + g_ScreenInfo[nScreenNum].dwUserHeight = data.monitorHeight; + g_ScreenInfo[nScreenNum].dwInitialX = data.monitorOffsetX; + g_ScreenInfo[nScreenNum].dwInitialY = data.monitorOffsetY; + } + else + { + /* monitor does not exist, error out */ + ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", + iMonitor); + UseMsg (); + exit (0); + return 0; + } + } + /* Look for 'WxD' or 'W D' */ - if (i + 2 < argc + else if (i + 2 < argc && 2 == sscanf (argv[i + 2], "%dx%d", (int *) &iWidth, (int *) &iHeight)) @@ -285,6 +371,70 @@ g_ScreenInfo[nScreenNum].dwHeight = iHeight; g_ScreenInfo[nScreenNum].dwUserWidth = iWidth; g_ScreenInfo[nScreenNum].dwUserHeight = iHeight; + /* Look for WxD+X+Y */ + if (2 == sscanf (argv[i + 2], "%*dx%*d+%d+%d", + (int *) &iX, + (int *) &iY)) + { + winErrorFVerb (2, "ddxProcessArgument - screen - Found ``X+Y'' arg\n"); + g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE; + g_ScreenInfo[nScreenNum].dwInitialX = iX; + g_ScreenInfo[nScreenNum].dwInitialY = iY; + + /* look for WxD+X+Y@m where m is monitor number. take X,Y to be offsets from monitor's root position */ + if (1 == sscanf (argv[i + 2], "%*dx%*d+%*d+%*d@%d", + (int *) &iMonitor)) + { + struct GetMonitorInfoData data; + if (!QueryMonitor(iMonitor, &data)) + { + ErrorF ("ddxProcessArgument - screen - " + "Querying monitors is not supported on NT4 and Win95\n"); + } else if (data.bMonitorSpecifiedExists == TRUE) + { + g_ScreenInfo[nScreenNum].dwInitialX += data.monitorOffsetX; + g_ScreenInfo[nScreenNum].dwInitialY += data.monitorOffsetY; + } + else + { + /* monitor does not exist, error out */ + ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", + iMonitor); + UseMsg (); + exit (0); + return 0; + } + + } + } + + /* look for WxD@m where m is monitor number */ + else if (1 == sscanf(argv[i + 2], "%*dx%*d@%d", + (int *) &iMonitor)) + { + struct GetMonitorInfoData data; + if (!QueryMonitor(iMonitor, &data)) + { + ErrorF ("ddxProcessArgument - screen - " + "Querying monitors is not supported on NT4 and Win95\n"); + } else if (data.bMonitorSpecifiedExists == TRUE) + { + winErrorFVerb (2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor); + g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE; + g_ScreenInfo[nScreenNum].dwInitialX = data.monitorOffsetX; + g_ScreenInfo[nScreenNum].dwInitialY = data.monitorOffsetY; + } + else + { + /* monitor does not exist, error out */ + ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", + iMonitor); + UseMsg (); + exit (0); + return 0; + } + + } } else if (i + 3 < argc && 1 == sscanf (argv[i + 2], "%d", @@ -299,6 +449,18 @@ g_ScreenInfo[nScreenNum].dwHeight = iHeight; g_ScreenInfo[nScreenNum].dwUserWidth = iWidth; g_ScreenInfo[nScreenNum].dwUserHeight = iHeight; + if (i + 5 < argc + && 1 == sscanf (argv[i + 4], "%d", + (int *) &iX) + && 1 == sscanf (argv[i + 5], "%d", + (int *) &iY)) + { + winErrorFVerb (2, "ddxProcessArgument - screen - Found ``X Y'' arg\n"); + iArgsProcessed = 6; + g_ScreenInfo[nScreenNum].fUserGavePosition = TRUE; + g_ScreenInfo[nScreenNum].dwInitialX = iX; + g_ScreenInfo[nScreenNum].dwInitialY = iY; + } } else { @@ -399,12 +561,16 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + if (!g_ScreenInfo[j].fMultiMonitorOverride) + g_ScreenInfo[j].fMultipleMonitors = FALSE; g_ScreenInfo[j].fFullScreen = TRUE; } } else { /* Parameter is for a single screen */ + if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride) + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE; g_ScreenInfo[g_iLastScreen].fFullScreen = TRUE; } @@ -451,12 +617,16 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + if (!g_ScreenInfo[j].fMultiMonitorOverride) + g_ScreenInfo[j].fMultipleMonitors = FALSE; g_ScreenInfo[j].fDecoration = FALSE; } } else { /* Parameter is for a single screen */ + if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride) + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE; g_ScreenInfo[g_iLastScreen].fDecoration = FALSE; } @@ -478,12 +648,16 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + if (!g_ScreenInfo[j].fMultiMonitorOverride) + g_ScreenInfo[j].fMultipleMonitors = TRUE; g_ScreenInfo[j].fMWExtWM = TRUE; } } else { /* Parameter is for a single screen */ + if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride) + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE; g_ScreenInfo[g_iLastScreen].fMWExtWM = TRUE; } @@ -505,12 +679,16 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + if (!g_ScreenInfo[j].fMultiMonitorOverride) + g_ScreenInfo[j].fMultipleMonitors = FALSE; g_ScreenInfo[j].fRootless = TRUE; } } else { /* Parameter is for a single screen */ + if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride) + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE; g_ScreenInfo[g_iLastScreen].fRootless = TRUE; } @@ -532,12 +710,16 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + if (!g_ScreenInfo[j].fMultiMonitorOverride) + g_ScreenInfo[j].fMultipleMonitors = TRUE; g_ScreenInfo[j].fMultiWindow = TRUE; } } else { /* Parameter is for a single screen */ + if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride) + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE; g_ScreenInfo[g_iLastScreen].fMultiWindow = TRUE; } @@ -560,12 +742,14 @@ /* Parameter is for all screens */ for (j = 0; j < MAXSCREENS; j++) { + g_ScreenInfo[j].fMultiMonitorOverride = TRUE; g_ScreenInfo[j].fMultipleMonitors = TRUE; } } else { /* Parameter is for a single screen */ + g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE; g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE; } @@ -574,6 +758,36 @@ } /* + * Look for the '-nomultiplemonitors' argument + */ + if (IS_OPTION ("-nomultiplemonitors") + || IS_OPTION ("-nomultimonitors")) + { + /* Is this parameter attached to a screen or is it global? */ + if (-1 == g_iLastScreen) + { + int j; + + /* Parameter is for all screens */ + for (j = 0; j < MAXSCREENS; j++) + { + g_ScreenInfo[j].fMultiMonitorOverride = TRUE; + g_ScreenInfo[j].fMultipleMonitors = FALSE; + } + } + else + { + /* Parameter is for a single screen */ + g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE; + g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE; + } + + /* Indicate that we have processed this argument */ + return 1; + } + + + /* * Look for the '-scrollbars' argument */ if (IS_OPTION ("-scrollbars")) @@ -1254,3 +1468,24 @@ ErrorF ("Release: %s\n\n", VERSION_STRING); ErrorF ("Contact: %s\n\n", VENDOR_CONTACT); } + +/* + * getMonitorInfo - callback function used to return information from the enumeration of monitors attached + */ + +BOOL CALLBACK getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data) +{ + struct GetMonitorInfoData* data = (struct GetMonitorInfoData*)_data; + // only get data for monitor number specified in <data> + data->monitorNum++; + if (data->monitorNum == data->requestedMonitor) + { + data->bMonitorSpecifiedExists = TRUE; + data->monitorOffsetX = rect->left; + data->monitorOffsetY = rect->top; + data->monitorHeight = rect->bottom - rect->top; + data->monitorWidth = rect->right - rect->left; + return FALSE; + } + return TRUE; +} diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winresource.h x11r682/xc/programs/Xserver/hw/xwin/winresource.h --- xc/programs/Xserver/hw/xwin/winresource.h 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winresource.h 2004-12-15 20:22:53.000000000 +0100 @@ -48,6 +48,7 @@ #define ID_APP_HIDE_ROOT 201 #define ID_APP_ALWAYS_ON_TOP 202 #define ID_APP_ABOUT 203 +#define ID_APP_SHOWCURSOR 204 #define ID_ABOUT_UG 300 #define ID_ABOUT_FAQ 301 diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winshadddnl.c x11r682/xc/programs/Xserver/hw/xwin/winshadddnl.c --- xc/programs/Xserver/hw/xwin/winshadddnl.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winshadddnl.c 2004-12-15 20:22:53.000000000 +0100 @@ -141,11 +141,21 @@ &ddsd, &pScreenPriv->pddsPrimary4, NULL); + pScreenPriv->fRetryCreateSurface = FALSE; if (FAILED (ddrval)) { - ErrorF ("winCreatePrimarySurfaceShadowDDNL - Could not create primary " - "surface: %08x\n", - (unsigned int) ddrval); + if (ddrval == DDERR_NOEXCLUSIVEMODE) + { + /* Recreating the surface failed. Mark screen to retry later */ + pScreenPriv->fRetryCreateSurface = TRUE; + winDebug ("winCreatePrimarySurfaceShadowDDNL - Could not create " + "primary surface: DDERR_NOEXCLUSIVEMODE\n"); + } + else + { + ErrorF ("winCreatePrimarySurfaceShadowDDNL - Could not create " + "primary surface: %08x\n", (unsigned int) ddrval); + } return FALSE; } @@ -1055,6 +1065,17 @@ Bool fReturn = TRUE; int i; + /* Quite common case. The primary surface was lost (maybe because of depth + * change). Try to create a new primary surface. Bail out if this fails */ + if (pScreenPriv->pddsPrimary4 == NULL && pScreenPriv->fRetryCreateSurface && + !winCreatePrimarySurfaceShadowDDNL(pScreen)) + { + Sleep(100); + return FALSE; + } + if (pScreenPriv->pddsPrimary4 == NULL) + return FALSE; + /* BeginPaint gives us an hdc that clips to the invalidated region */ hdcUpdate = BeginPaint (pScreenPriv->hwndScreen, &ps); if (hdcUpdate == NULL) diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c x11r682/xc/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c --- xc/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c 2004-08-03 12:12:25.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winwin32rootlesswndproc.c 2004-12-15 20:22:53.000000000 +0100 @@ -652,6 +652,18 @@ ReleaseCapture (); return winMouseButtonsHandle (pScreen, ButtonRelease, Button3, wParam); + case WM_XBUTTONDBLCLK: + case WM_XBUTTONDOWN: + if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) + break; + SetCapture (hwnd); + return winMouseButtonsHandle (pScreen, ButtonPress, HIWORD(wParam) + 5, wParam); + case WM_XBUTTONUP: + if (pScreenPriv == NULL || pScreenInfo->fIgnoreInput) + break; + ReleaseCapture (); + return winMouseButtonsHandle (pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam); + case WM_MOUSEWHEEL: #if CYGMULTIWINDOW_DEBUG winDebug ("winMWExtWMWindowProc - WM_MOUSEWHEEL\n"); diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/hw/xwin/winwndproc.c x11r682/xc/programs/Xserver/hw/xwin/winwndproc.c --- xc/programs/Xserver/hw/xwin/winwndproc.c 2004-06-21 15:19:32.000000000 +0200 +++ xc/programs/Xserver/hw/xwin/winwndproc.c 2005-01-13 04:56:07.000000000 +0100 @@ -873,6 +873,28 @@ ReleaseCapture (); return winMouseButtonsHandle (s_pScreen, ButtonRelease, Button3, wParam); + case WM_XBUTTONDBLCLK: + case WM_XBUTTONDOWN: + if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) + break; + if (s_pScreenInfo->fRootless +#ifdef XWIN_MULTIWINDOWEXTWM + || s_pScreenInfo->fMWExtWM +#endif + ) + SetCapture (hwnd); + return winMouseButtonsHandle (s_pScreen, ButtonPress, HIWORD(wParam) + 5, wParam); + case WM_XBUTTONUP: + if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) + break; + if (s_pScreenInfo->fRootless +#ifdef XWIN_MULTIWINDOWEXTWM + || s_pScreenInfo->fMWExtWM +#endif + ) + ReleaseCapture (); + return winMouseButtonsHandle (s_pScreen, ButtonRelease, HIWORD(wParam) + 5, wParam); + case WM_TIMER: if (s_pScreenPriv == NULL || s_pScreenInfo->fIgnoreInput) break; @@ -990,7 +1012,7 @@ * be returned to Windows. We may be able to trap the Windows keys, * but we should determine if that is desirable before doing so. */ - if (wParam == VK_LWIN || wParam == VK_RWIN) + if ((wParam == VK_LWIN || wParam == VK_RWIN) && !g_fKeyboardHookLL) break; #ifdef XKB @@ -1031,7 +1053,7 @@ * be returned to Windows. We may be able to trap the Windows keys, * but we should determine if that is desirable before doing so. */ - if (wParam == VK_LWIN || wParam == VK_RWIN) + if ((wParam == VK_LWIN || wParam == VK_RWIN) && !g_fKeyboardHookLL) break; /* Ignore the fake Ctrl_L that follows an AltGr release */ @@ -1139,6 +1161,9 @@ /* Display Exit dialog */ winDisplayExitDialog (s_pScreenPriv); return 0; + case ID_APP_SHOWCURSOR: + winDebug("ShowCursor: %d\n", ShowCursor(TRUE)); + return 0; #ifdef XWIN_MULTIWINDOW case ID_APP_HIDE_ROOT: diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/include/globals.h x11r682/xc/programs/Xserver/include/globals.h --- xc/programs/Xserver/include/globals.h 2004-07-31 11:14:06.000000000 +0200 +++ xc/programs/Xserver/include/globals.h 2004-12-08 06:28:11.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/include/globals.h,v 1.4 2004/07/31 09:14:06 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/include/globals.h,v 1.4.2.1 2004/12/08 05:28:11 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/include/globals.h,v 1.3 1999/09/25 14:38:21 dawes Exp $ */ #ifndef _XSERV_GLOBAL_H_ @@ -42,23 +42,163 @@ #endif #ifdef PANORAMIX -extern Bool noPanoramiXExtension; extern Bool PanoramiXMapped; extern Bool PanoramiXVisibilityNotifySent; extern Bool PanoramiXWindowExposureSent; extern Bool PanoramiXOneExposeRequest; #endif +#ifdef BEZIER +extern Bool noBezierExtension; +#endif + +#ifdef BIGREQS +extern Bool noBigReqExtension; +#endif + +#ifdef COMPOSITE +extern Bool noCompositeExtension; +#endif + +#ifdef DAMAGE +extern Bool noDamageExtension; +#endif + +#ifdef DBE +extern Bool noDbeExtension; +#endif + +#ifdef DPSEXT +extern Bool noDPSExtension; +#endif + +#ifdef DPMSExtension +extern Bool noDPMSExtension; +#endif + +#ifdef EVI +extern Bool noEVIExtension; +#endif + +#ifdef FONTCACHE +extern Bool noFontCacheExtension; +#endif + +#ifdef GLXEXT +extern Bool noGlxExtension; +#endif + +#ifdef LBX +extern Bool noLbxExtension; +#endif + +#ifdef SCREENSAVER +extern Bool noScreenSaverExtension; +#endif + +#ifdef MITSHM +extern Bool noMITShmExtension; +#endif + +#ifdef MITMISC +extern Bool noMITMiscExtension; +#endif + +#ifdef MULTIBUFFER +extern Bool noMultibufferExtension; +#endif + +#ifdef RANDR +extern Bool noRRExtension; +#endif + #ifdef RENDER extern Bool noRenderExtension; #endif +#ifdef SHAPE +extern Bool noShapeExtension; +#endif + +#ifdef XCSECURITY +extern Bool noSecurityExtension; +#endif + +#ifdef XSYNC +extern Bool noSyncExtension; +#endif + +#ifdef TOGCUP +extern Bool noXcupExtension; +#endif + +#ifdef PEXEXT +extern Bool noPexExtension; +#endif + +#ifdef RES +extern Bool noResExtension; +#endif + +#ifdef XAPPGROUP +extern Bool noXagExtension; +#endif + +#ifdef XCMISC +extern Bool noXCMiscExtension; +#endif + #ifdef XEVIE extern Bool noXevieExtension; #endif -#ifdef COMPOSITE -extern Bool noCompositeExtension; +#ifdef XIE +extern Bool noXie; +#endif + +#ifdef XF86BIGFONT +extern Bool noXFree86BigfontExtension; +#endif + +#ifdef XFreeXDGA +extern Bool noXFree86DGAExtension; +#endif + +#ifdef XF86DRI +extern Bool noXFree86DRIExtension; +#endif + +#ifdef XF86MISC +extern Bool noXFree86MiscExtension; +#endif + +#ifdef XF86VIDMODE +extern Bool noXFree86VidModeExtension; +#endif + +#ifdef XFIXES +extern Bool noXFixesExtension; +#endif + +#ifdef XKB +/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */ +extern Bool noXkbExtension; +#endif + +#ifdef PANORAMIX +extern Bool noPanoramiXExtension; +#endif + +#ifdef XINPUT +extern Bool noXInputExtension; +#endif + +#ifdef XIDLE +extern Bool noXIdleExtension; +#endif + +#ifdef XV +extern Bool noXvExtension; #endif -#endif /* _XSERV_GLOBAL_H_ */ +#endif /* !_XSERV_GLOBAL_H_ */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/mi/micmap.c x11r682/xc/programs/Xserver/mi/micmap.c --- xc/programs/Xserver/mi/micmap.c 2004-06-30 22:06:56.000000000 +0200 +++ xc/programs/Xserver/mi/micmap.c 2004-12-17 01:38:22.000000000 +0100 @@ -55,10 +55,11 @@ int miListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps) { - /* By the time we are processing requests, we can guarantee that there - * is always a colormap installed */ - *pmaps = miInstalledMaps[pScreen->myNum]->mid; - return (1); + if (miInstalledMaps[pScreen->myNum]) { + *pmaps = miInstalledMaps[pScreen->myNum]->mid; + return (1); + } + return 0; } void diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/mi/miinitext.c x11r682/xc/programs/Xserver/mi/miinitext.c --- xc/programs/Xserver/mi/miinitext.c 2004-08-12 10:45:33.000000000 +0200 +++ xc/programs/Xserver/mi/miinitext.c 2004-12-13 06:48:41.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/mi/miinitext.c,v 1.12 2004/08/12 08:45:33 anholt Exp $ */ +/* $XdotOrg: xc/programs/Xserver/mi/miinitext.c,v 1.12.2.3 2004/12/13 05:48:41 gisburn Exp $ */ /* $XFree86: xc/programs/Xserver/mi/miinitext.c,v 3.67 2003/01/12 02:44:27 dawes Exp $ */ /*********************************************************** @@ -74,7 +74,6 @@ #undef SCREENSAVER #undef XIDLE #undef XRECORD -#undef DBE #undef XF86VIDMODE #undef XF86MISC #undef XFreeXDGA @@ -88,21 +87,123 @@ #undef XEVIE #endif /* PRINT_ONLY_SERVER */ -#ifdef PANORAMIX -extern Bool noPanoramiXExtension; -#endif + extern Bool noTestExtensions; -#ifdef XKB -extern Bool noXkbExtension; + +#ifdef BEZIER +extern Bool noBezierExtension; +#endif +#ifdef BIGREQS +extern Bool noBigReqExtension; +#endif +#ifdef COMPOSITE +extern Bool noCompositeExtension; +#endif +#ifdef DAMAGE +extern Bool noDamageExtension; +#endif +#ifdef DBE +extern Bool noDbeExtension; +#endif +#ifdef DPSEXT +extern Bool noDPSExtension; +#endif +#ifdef DPMSExtension +extern Bool noDPMSExtension; +#endif +#ifdef EVI +extern Bool noEVIExtension; +#endif +#ifdef FONTCACHE +extern Bool noFontCacheExtension; +#endif +#ifdef GLXEXT +extern Bool noGlxExtension; +#endif +#ifdef LBX +extern Bool noLbxExtension; +#endif +#ifdef SCREENSAVER +extern Bool noScreenSaverExtension; +#endif +#ifdef MITSHM +extern Bool noMITShmExtension; +#endif +#ifdef MITMISC +extern Bool noMITMiscExtension; +#endif +#ifdef MULTIBUFFER +extern Bool noMultibufferExtension; +#endif +#ifdef RANDR +extern Bool noRRExtension; #endif #ifdef RENDER extern Bool noRenderExtension; #endif +#ifdef SHAPE +extern Bool noShapeExtension; +#endif +#ifdef XCSECURITY +extern Bool noSecurityExtension; +#endif +#ifdef XSYNC +extern Bool noSyncExtension; +#endif +#ifdef TOGCUP +extern Bool noXcupExtension; +#endif +#ifdef PEXEXT +extern Bool noPexExtension; +#endif +#ifdef RES +extern Bool noResExtension; +#endif +#ifdef XAPPGROUP +extern Bool noXagExtension; +#endif +#ifdef XCMISC +extern Bool noXCMiscExtension; +#endif #ifdef XEVIE extern Bool noXevieExtension; #endif -#ifdef COMPOSITE -extern Bool noCompositeExtension; +#ifdef XIE +extern Bool noXie; +#endif +#ifdef XF86BIGFONT +extern Bool noXFree86BigfontExtension; +#endif +#ifdef XFreeXDGA +extern Bool noXFree86DGAExtension; +#endif +#ifdef XF86DRI +extern Bool noXFree86DRIExtension; +#endif +#ifdef XF86MISC +extern Bool noXFree86MiscExtension; +#endif +#ifdef XF86VIDMODE +extern Bool noXFree86VidModeExtension; +#endif +#ifdef XFIXES +extern Bool noXFixesExtension; +#endif +#ifdef XKB +/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */ +extern Bool noXkbExtension; +#endif +#ifdef PANORAMIX +extern Bool noPanoramiXExtension; +#endif +#ifdef XINPUT +extern Bool noXInputExtension; +#endif +#ifdef XIDLE +extern Bool noXIdleExtension; +#endif +#ifdef XV +extern Bool noXvExtension; #endif #ifndef XFree86LOADER @@ -299,21 +400,118 @@ static ExtensionToggle ExtensionToggleList[] = { - { "XTEST", &noTestExtensions }, -#ifdef PANORAMIX - { "XINERAMA", &noPanoramiXExtension }, + /* sort order is extension name string as shown in xdpyinfo */ +#ifdef BEZIER + { "BEZIER", &noBezierExtension }, +#endif +#ifdef BIGREQS + { "BIG-REQUESTS", &noBigReqExtension }, +#endif +#ifdef COMPOSITE + { "Composite", &noCompositeExtension }, +#endif +#ifdef DAMAGE + { "DAMAGE", &noDamageExtension }, +#endif +#ifdef DBE + { "DOUBLE-BUFFER", &noDbeExtension }, +#endif +#ifdef DPSEXT + { "DPSExtension", &noDPSExtension }, +#endif +#ifdef DPMSExtension + { "DPMS", &noDPMSExtension }, +#endif +#ifdef EVI + { "Extended-Visual-Information", &noEVIExtension }, +#endif +#ifdef FONTCACHE + { "FontCache", &noFontCacheExtension }, +#endif +#ifdef GLXEXT + { "GLX", &noGlxExtension }, +#endif +#ifdef LBX + { "LBX", &noLbxExtension }, +#endif +#ifdef SCREENSAVER + { "MIT-SCREEN-SAVER", &noScreenSaverExtension }, +#endif +#ifdef MITSHM + { SHMNAME, &noMITShmExtension }, +#endif +#ifdef MITMISC + { "MIT-SUNDRY-NONSTANDARD", &noMITMiscExtension }, +#endif +#ifdef MULTIBUFFER + { "Multi-Buffering", &noMultibufferExtension }, +#endif +#ifdef RANDR + { "RANDR", &noRRExtension }, #endif #ifdef RENDER { "RENDER", &noRenderExtension }, #endif -#ifdef XKB - { "XKEYBOARD", &noXkbExtension }, +#ifdef SHAPE + { "SHAPE", &noShapeExtension }, +#endif +#ifdef XCSECURITY + { "SECURITY", &noSecurityExtension }, +#endif +#ifdef XSYNC + { "SYNC", &noSyncExtension }, +#endif +#ifdef TOGCUP + { "TOG-CUP", &noXcupExtension }, +#endif +#ifdef PEXEXT + { "X3D-PEX", &noPexExtension }, +#endif +#ifdef RES + { "X-Resource", &noResExtension }, +#endif +#ifdef XAPPGROUP + { "XC-APPGROUP", &noXagExtension }, +#endif +#ifdef XCMISC + { "XC-MISC", &noXCMiscExtension }, #endif #ifdef XEVIE { "XEVIE", &noXevieExtension }, #endif -#ifdef COMPOSITE - { "Composite", &noCompositeExtension }, +#ifdef XF86BIGFONT + { "XFree86-Bigfont", &noXFree86BigfontExtension }, +#endif +#ifdef XFreeXDGA + { "XFree86-DGA", &noXFree86DGAExtension }, +#endif +#ifdef XF86DRI + { "XFree86-DRI", &noXFree86DRIExtension }, +#endif +#ifdef XF86MISC + { "XFree86-Misc", &noXFree86MiscExtension }, +#endif +#ifdef XF86VIDMODE + { "XFree86-VidModeExtension", &noXFree86VidModeExtension }, +#endif +#ifdef XFIXES + { "XFIXES", &noXFixesExtension }, +#endif +#ifdef XIE + { "XIE", &noXie }, +#endif +#ifdef PANORAMIX + { "XINERAMA", &noPanoramiXExtension }, +#endif +#ifdef XINPUT + { "XInputExtension", &noXInputExtension }, +#endif +#ifdef XKB + { "XKEYBOARD", &noXkbExtension }, +#endif + { "XTEST", &noTestExtensions }, +#ifdef XV + { "XVideo", &noXvExtension }, #endif { NULL, NULL } }; @@ -357,134 +555,136 @@ # endif #endif #ifdef BEZIER - BezierExtensionInit(); + if (!noBezierExtension) BezierExtensionInit(); #endif #ifdef XTESTEXT1 if (!noTestExtensions) XTestExtension1Init(); #endif #ifdef SHAPE - ShapeExtensionInit(); + if (!noShapeExtension) ShapeExtensionInit(); #endif #ifdef MITSHM - ShmExtensionInit(); + if (!noMITShmExtension) ShmExtensionInit(); #endif #ifdef EVI - EVIExtensionInit(); + if (!noEVIExtension) EVIExtensionInit(); #endif #ifdef PEXEXT - PexExtensionInit(); + if (!noPexExtension) PexExtensionInit(); #endif #ifdef MULTIBUFFER - MultibufferExtensionInit(); + if (!noMultibufferExtension) MultibufferExtensionInit(); #endif #if defined(XINPUT) && !defined(NO_HW_ONLY_EXTS) - XInputExtensionInit(); + if (!noXInputExtension) XInputExtensionInit(); #endif #ifdef XTEST if (!noTestExtensions) XTestExtensionInit(); #endif #ifdef BIGREQS - BigReqExtensionInit(); + if (!noBigReqExtension) BigReqExtensionInit(); #endif #ifdef MITMISC - MITMiscExtensionInit(); + if (!noMITMiscExtension) MITMiscExtensionInit(); #endif #ifdef XIDLE - XIdleExtensionInit(); + if (!noXIdleExtension) XIdleExtensionInit(); #endif #ifdef XTRAP if (!noTestExtensions) DEC_XTRAPInit(); #endif #if defined(SCREENSAVER) && !defined(PRINT_ONLY_SERVER) - ScreenSaverExtensionInit (); + if (!noScreenSaverExtension) ScreenSaverExtensionInit (); #endif #ifdef XV - XvExtensionInit(); - XvMCExtensionInit(); + if (!noXvExtension) { + XvExtensionInit(); + XvMCExtensionInit(); + } #endif #ifdef XIE - XieInit(); + if (!noXie) XieInit(); #endif #ifdef XSYNC - SyncExtensionInit(); + if (!noSyncExtension) SyncExtensionInit(); #endif #if defined(XKB) && !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS) if (!noXkbExtension) XkbExtensionInit(); #endif #ifdef XCMISC - XCMiscExtensionInit(); + if (!noXCMiscExtension) XCMiscExtensionInit(); #endif #ifdef XRECORD if (!noTestExtensions) RecordExtensionInit(); #endif #ifdef LBX - LbxExtensionInit(); + if (!noLbxExtension) LbxExtensionInit(); #endif #ifdef DBE - DbeExtensionInit(); + if (!noDbeExtension) DbeExtensionInit(); #endif #ifdef XAPPGROUP - XagExtensionInit(); + if (!noXagExtension) XagExtensionInit(); #endif #ifdef XCSECURITY - SecurityExtensionInit(); + if (!noSecurityExtension) SecurityExtensionInit(); #endif #ifdef XPRINT - XpExtensionInit(); + XpExtensionInit(); /* server-specific extension, cannot be disabled */ #endif #ifdef TOGCUP - XcupExtensionInit(); + if (!noXcupExtension) XcupExtensionInit(); #endif #if defined(DPMSExtension) && !defined(NO_HW_ONLY_EXTS) - DPMSExtensionInit(); + if (!noDPMSExtension) DPMSExtensionInit(); #endif #ifdef FONTCACHE - FontCacheExtensionInit(); + if (!noFontCacheExtension) FontCacheExtensionInit(); #endif #ifdef XF86BIGFONT - XFree86BigfontExtensionInit(); + if (!noXFree86BigfontExtension) XFree86BigfontExtensionInit(); #endif #if !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS) #if defined(XF86VIDMODE) - XFree86VidModeExtensionInit(); + if (!noXFree86VidModeExtension) XFree86VidModeExtensionInit(); #endif #if defined(XF86MISC) - XFree86MiscExtensionInit(); + if (!noXFree86MiscExtension) XFree86MiscExtensionInit(); #endif #if defined(XFreeXDGA) - XFree86DGAExtensionInit(); + if (!noXFree86DGAExtension) XFree86DGAExtensionInit(); #endif #ifdef XF86DRI - XFree86DRIExtensionInit(); + if (!noXFree86DRIExtension) XFree86DRIExtensionInit(); #endif #endif #ifdef GLXEXT #ifndef __DARWIN__ - GlxExtensionInit(); + if (!noGlxExtension) GlxExtensionInit(); #else - DarwinGlxExtensionInit(); + if (!noGlxExtension) DarwinGlxExtensionInit(); #endif #endif #ifdef DPSEXT #ifndef XPRINT - DPSExtensionInit(); + if (!noDPSExtension) DPSExtensionInit(); #endif #endif #ifdef XFIXES /* must be before Render to layer DisplayCursor correctly */ - XFixesExtensionInit(); + if (!noXFixesExtension) XFixesExtensionInit(); #endif #ifdef RENDER if (!noRenderExtension) RenderExtensionInit(); #endif #ifdef RANDR - RRExtensionInit(); + if (!noRRExtension) RRExtensionInit(); #endif #ifdef RES - ResExtensionInit(); + if (!noResExtension) ResExtensionInit(); #endif #ifdef DMXEXT - DMXExtensionInit(); + DMXExtensionInit(); /* server-specific extension, cannot be disabled */ #endif #ifdef XEVIE if (!noXevieExtension) XevieExtensionInit(); @@ -493,7 +693,7 @@ if (!noCompositeExtension) CompositeExtensionInit(); #endif #ifdef DAMAGE - DamageExtensionInit(); + if (!noDamageExtension) DamageExtensionInit(); #endif } @@ -511,96 +711,37 @@ } #else /* XFree86LOADER */ -#if 0 -/* FIXME:The names here must come from the headers. those with ?? are - not included in X11R6.3 sample implementation, so there's a problem... */ -/* XXX use the correct #ifdefs for symbols not present when an extension - is disabled */ -ExtensionModule extension[] = -{ - { NULL, "BEZIER", NULL, NULL }, /* ?? */ - { NULL, "XTEST1", &noTestExtensions, NULL }, /* ?? */ - { NULL, "SHAPE", NULL, NULL }, - { NULL, "MIT-SHM", NULL, NULL }, - { NULL, "X3D-PEX", NULL, NULL }, - { NULL, "Multi-Buffering", NULL, NULL }, - { NULL, "XInputExtension", NULL, NULL }, - { NULL, "XTEST", &noTestExtensions, NULL }, - { NULL, "BIG-REQUESTS", NULL, NULL }, - { NULL, "MIT-SUNDRY-NONSTANDARD", NULL, NULL }, - { NULL, "XIDLE", NULL, NULL }, /* ?? */ - { NULL, "XTRAP", &noTestExtensions, NULL }, /* ?? */ - { NULL, "MIT-SCREEN-SAVER", NULL, NULL }, - { NULL, "XVideo", NULL, NULL }, /* ?? */ - { NULL, "XIE", NULL, NULL }, - { NULL, "SYNC", NULL, NULL }, -#ifdef XKB - { NULL, "XKEYBOARD", &noXkbExtension, NULL }, -#else - { NULL, "NOXKEYBOARD", NULL, NULL }, -#endif - { NULL, "XC-MISC", NULL, NULL }, - { NULL, "RECORD", &noTestExtensions, NULL }, - { NULL, "LBX", NULL, NULL }, - { NULL, "DOUBLE-BUFFER", NULL, NULL }, - { NULL, "XC-APPGROUP", NULL, NULL }, - { NULL, "SECURITY", NULL, NULL }, - { NULL, "XpExtension", NULL, NULL }, - { NULL, "XFree86-VidModeExtension", NULL, NULL }, - { NULL, "XFree86-Misc", NULL, NULL }, - { NULL, "XFree86-DGA", NULL, NULL }, - { NULL, "DPMS", NULL, NULL }, - { NULL, "GLX", NULL, NULL }, - { NULL, "TOG-CUP", NULL, NULL }, - { NULL, "Extended-Visual-Information", NULL, NULL }, -#ifdef PANORAMIX - { NULL, "XINERAMA", &noPanoramiXExtension, NULL }, -#else - { NULL, "NOXINERAMA", NULL, NULL }, -#endif - { NULL, "XFree86-Bigfont", NULL, NULL }, - { NULL, "XFree86-DRI", NULL, NULL }, - { NULL, "Adobe-DPS-Extension", NULL, NULL }, - { NULL, "FontCache", NULL, NULL }, - { NULL, "RENDER", NULL, NULL }, - { NULL, "RANDR", NULL, NULL }, - { NULL, "X-Resource", NULL, NULL }, - { NULL, "DMX", NULL, NULL }, - { NULL, NULL, NULL, NULL } -}; -#endif - /* List of built-in (statically linked) extensions */ static ExtensionModule staticExtensions[] = { #ifdef BEZIER - { BezierExtensionInit, "BEZIER", NULL, NULL, NULL }, + { BezierExtensionInit, "BEZIER", &noBezierExtension, NULL, NULL }, #endif #ifdef XTESTEXT1 { XTestExtension1Init, "XTEST1", &noTestExtensions, NULL, NULL }, #endif #ifdef MITSHM - { ShmExtensionInit, SHMNAME, NULL, NULL, NULL }, + { ShmExtensionInit, SHMNAME, &noMITShmExtension, NULL, NULL }, #endif #ifdef XINPUT - { XInputExtensionInit, "XInputExtension", NULL, NULL, NULL }, + { XInputExtensionInit, "XInputExtension", &noXInputExtension, NULL, NULL }, #endif #ifdef XTEST { XTestExtensionInit, XTestExtensionName, &noTestExtensions, NULL, NULL }, #endif #ifdef XIDLE - { XIdleExtensionInit, "XIDLE", NULL, NULL, NULL }, + { XIdleExtensionInit, "XIDLE", &noXIdleExtension, NULL, NULL }, #endif #ifdef XKB { XkbExtensionInit, XkbName, &noXkbExtension, NULL, NULL }, #endif #ifdef LBX - { LbxExtensionInit, LBXNAME, NULL, NULL, NULL }, + { LbxExtensionInit, LBXNAME, &noLbxExtension, NULL, NULL }, #endif #ifdef XAPPGROUP - { XagExtensionInit, XAGNAME, NULL, NULL, NULL }, + { XagExtensionInit, XAGNAME, &noXagExtension, NULL, NULL }, #endif #ifdef XCSECURITY - { SecurityExtensionInit, SECURITY_EXTENSION_NAME, NULL, NULL, NULL }, + { SecurityExtensionInit, SECURITY_EXTENSION_NAME, &noSecurityExtension, NULL, NULL }, #endif #ifdef XPRINT { XpExtensionInit, XP_PRINTNAME, NULL, NULL, NULL }, @@ -610,22 +751,22 @@ #endif #ifdef XFIXES /* must be before Render to layer DisplayCursor correctly */ - { XFixesExtensionInit, "XFIXES", NULL, NULL, NULL }, + { XFixesExtensionInit, "XFIXES", &noXFixesExtension, NULL, NULL }, #endif #ifdef XF86BIGFONT - { XFree86BigfontExtensionInit, XF86BIGFONTNAME, NULL, NULL, NULL }, + { XFree86BigfontExtensionInit, XF86BIGFONTNAME, &noXFree86BigfontExtension, NULL, NULL }, #endif #ifdef RENDER { RenderExtensionInit, "RENDER", &noRenderExtension, NULL, NULL }, #endif #ifdef RANDR - { RRExtensionInit, "RANDR", NULL, NULL, NULL }, + { RRExtensionInit, "RANDR", &noRRExtension, NULL, NULL }, #endif #ifdef COMPOSITE { CompositeExtensionInit, "COMPOSITE", &noCompositeExtension, NULL }, #endif #ifdef DAMAGE - { DamageExtensionInit, "DAMAGE", NULL, NULL }, + { DamageExtensionInit, "DAMAGE", &noDamageExtension, NULL }, #endif #ifdef XEVIE { XevieExtensionInit, "XEVIE", &noXevieExtension, NULL }, diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/miext/damage/Imakefile x11r682/xc/programs/Xserver/miext/damage/Imakefile --- xc/programs/Xserver/miext/damage/Imakefile 2004-09-02 06:04:47.000000000 +0200 +++ xc/programs/Xserver/miext/damage/Imakefile 2004-12-15 05:53:06.000000000 +0100 @@ -8,8 +8,7 @@ #endif #endif -#if (defined(XWinServer) && XWinServer && BuildXWinMultiWindowExtWM) || \ - (defined(XDarwinServer) && XDarwinServer && DarwinQuartzSupport) +#if BuildRootless DEFINES = -DROOTLESS_WORKAROUND #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/miext/damage/damage.c x11r682/xc/programs/Xserver/miext/damage/damage.c --- xc/programs/Xserver/miext/damage/damage.c 2004-09-03 18:18:23.000000000 +0200 +++ xc/programs/Xserver/miext/damage/damage.c 2004-12-13 01:56:07.000000000 +0100 @@ -1349,7 +1349,7 @@ DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, + x = damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, Linear8Bit, TT_POLY8); else x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars); @@ -1368,7 +1368,7 @@ DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, + x = damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, TT_POLY16); else diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/os/WaitFor.c x11r682/xc/programs/Xserver/os/WaitFor.c --- xc/programs/Xserver/os/WaitFor.c 2004-04-23 21:54:28.000000000 +0200 +++ xc/programs/Xserver/os/WaitFor.c 2004-12-13 02:45:15.000000000 +0100 @@ -663,17 +663,11 @@ if (!DPMSEnabled) return; - if (DPMSStandbyTime > 0) { - DPMSStandbyTimer = TimerSet(DPMSStandbyTimer, 0, DPMSStandbyTime, - DPMSStandbyTimerExpire, NULL); - } - if (DPMSSuspendTime > 0) { - DPMSSuspendTimer = TimerSet(DPMSSuspendTimer, 0, DPMSSuspendTime, - DPMSSuspendTimerExpire, NULL); - } - if (DPMSOffTime > 0) { - DPMSOffTimer = TimerSet(DPMSOffTimer, 0, DPMSOffTime, - DPMSOffTimerExpire, NULL); - } + DPMSStandbyTimer = TimerSet(DPMSStandbyTimer, 0, DPMSStandbyTime, + DPMSStandbyTimerExpire, NULL); + DPMSSuspendTimer = TimerSet(DPMSSuspendTimer, 0, DPMSSuspendTime, + DPMSSuspendTimerExpire, NULL); + DPMSOffTimer = TimerSet(DPMSOffTimer, 0, DPMSOffTime, + DPMSOffTimerExpire, NULL); } #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/Xserver/os/utils.c x11r682/xc/programs/Xserver/os/utils.c --- xc/programs/Xserver/os/utils.c 2004-08-12 00:27:50.000000000 +0200 +++ xc/programs/Xserver/os/utils.c 2004-12-08 07:34:31.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/Xserver/os/utils.c,v 1.6 2004/08/11 22:27:50 kem Exp $ */ +/* $XdotOrg: xc/programs/Xserver/os/utils.c,v 1.6.2.3 2004/12/08 06:34:31 gisburn Exp $ */ /* $Xorg: utils.c,v 1.5 2001/02/09 02:05:24 xorgcvs Exp $ */ /* @@ -119,8 +119,126 @@ #ifdef RENDER #include "picture.h" +#endif + +Bool noTestExtensions; +#ifdef BEZIER +Bool noBezierExtension = FALSE; +#endif +#ifdef BIGREQS +Bool noBigReqExtension = FALSE; +#endif +#ifdef COMPOSITE +/* COMPOSITE is disabled by default for now until the + * interface is stable */ +Bool noCompositeExtension = TRUE; +#endif +#ifdef DAMAGE +Bool noDamageExtension = FALSE; +#endif +#ifdef DBE +Bool noDbeExtension = FALSE; +#endif +#ifdef DPSEXT +Bool noDPSExtension = FALSE; +#endif +#ifdef DPMSExtension +Bool noDPMSExtension = FALSE; +#endif +#ifdef EVI +Bool noEVIExtension = FALSE; +#endif +#ifdef FONTCACHE +Bool noFontCacheExtension = FALSE; +#endif +#ifdef GLXEXT +Bool noGlxExtension = FALSE; +#endif +#ifdef LBX +Bool noLbxExtension = FALSE; +#endif +#ifdef SCREENSAVER +Bool noScreenSaverExtension = FALSE; +#endif +#ifdef MITSHM +Bool noMITShmExtension = FALSE; +#endif +#ifdef MITMISC +Bool noMITMiscExtension = FALSE; +#endif +#ifdef MULTIBUFFER +Bool noMultibufferExtension = FALSE; +#endif +#ifdef RANDR +Bool noRRExtension = FALSE; +#endif +#ifdef RENDER Bool noRenderExtension = FALSE; #endif +#ifdef SHAPE +Bool noShapeExtension = FALSE; +#endif +#ifdef XCSECURITY +Bool noSecurityExtension = FALSE; +#endif +#ifdef XSYNC +Bool noSyncExtension = FALSE; +#endif +#ifdef TOGCUP +Bool noXcupExtension = FALSE; +#endif +#ifdef PEXEXT +Bool noPexExtension = FALSE; +#endif +#ifdef RES +Bool noResExtension = FALSE; +#endif +#ifdef XAPPGROUP +Bool noXagExtension = FALSE; +#endif +#ifdef XCMISC +Bool noXCMiscExtension = FALSE; +#endif +#ifdef XEVIE +/* Xevie is disabled by default for now until the + * interface is stable */ +Bool noXevieExtension = TRUE; +#endif +#ifdef XIE +Bool noXie = FALSE; +#endif +#ifdef XF86BIGFONT +Bool noXFree86BigfontExtension = FALSE; +#endif +#ifdef XFreeXDGA +Bool noXFree86DGAExtension = FALSE; +#endif +#ifdef XF86DRI +Bool noXFree86DRIExtension = FALSE; +#endif +#ifdef XF86MISC +Bool noXFree86MiscExtension = FALSE; +#endif +#ifdef XF86VIDMODE +Bool noXFree86VidModeExtension = FALSE; +#endif +#ifdef XFIXES +Bool noXFixesExtension = FALSE; +#endif +/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */ +#ifdef PANORAMIX +/* Xinerama is disabled by default unless enabled via +xinerama */ +Bool noPanoramiXExtension = TRUE; +#endif +#ifdef XINPUT +Bool noXInputExtension = FALSE; +#endif +#ifdef XIDLE +Bool noXIdleExtension = FALSE; +#endif +#ifdef XV +Bool noXvExtension = FALSE; +#endif #define X_INCLUDE_NETDB_H #include <X11/Xos_r.h> @@ -128,24 +246,14 @@ #include <errno.h> Bool CoreDump; -Bool noTestExtensions; #ifdef PANORAMIX -Bool noPanoramiXExtension = TRUE; Bool PanoramiXVisibilityNotifySent = FALSE; Bool PanoramiXMapped = FALSE; Bool PanoramiXWindowExposureSent = FALSE; Bool PanoramiXOneExposeRequest = FALSE; #endif -#ifdef XEVIE -Bool noXevieExtension = TRUE; -#endif - -#ifdef COMPOSITE -Bool noCompositeExtension = TRUE; -#endif - int auditTrailLevel = 1; Bool Must_have_memory = FALSE; @@ -553,7 +661,7 @@ ErrorF("-v screen-saver without video blanking\n"); ErrorF("-wm WhenMapped default backing-store\n"); ErrorF("-x string loads named extension at init time \n"); - ErrorF("-maxbigreqsize set maximal bigrequest size \n"); + ErrorF("-maxbigreqsize set maximal bigrequest size \n"); #ifdef PANORAMIX ErrorF("+xinerama Enable XINERAMA extension\n"); ErrorF("-xinerama Disable XINERAMA extension\n"); @@ -900,11 +1008,11 @@ defaultBackingStore = WhenMapped; else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { if(++i < argc) { - int reqSizeArg = atoi(argv[i]); + long reqSizeArg = atol(argv[i]); /* Request size > 128MB does not make much sense... */ - if( reqSizeArg > 0 && reqSizeArg < 128 ) { - maxBigRequestSize = (reqSizeArg * 1048576) - 1; + if( reqSizeArg > 0L && reqSizeArg < 128L ) { + maxBigRequestSize = (reqSizeArg * 1048576L) - 1L; } else { diff -N -x '*CVS*' -r -u x11r680/xc/programs/mkfontscale/mkfontscale.c x11r682/xc/programs/mkfontscale/mkfontscale.c --- xc/programs/mkfontscale/mkfontscale.c 2004-04-23 21:54:36.000000000 +0200 +++ xc/programs/mkfontscale/mkfontscale.c 2004-12-13 14:50:44.000000000 +0100 @@ -19,7 +19,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XdotOrg: xc/programs/mkfontscale/mkfontscale.c,v 1.2 2004/04/23 19:54:36 eich Exp $ */ +/* $XdotOrg: xc/programs/mkfontscale/mkfontscale.c,v 1.2.4.1 2004/12/13 13:50:44 gisburn Exp $ */ /* $XFree86: xc/programs/mkfontscale/mkfontscale.c,v 1.21 2003/12/10 02:58:07 dawes Exp $ */ #include <stdio.h> @@ -63,7 +63,8 @@ #endif char *encodings_array[] = - { "iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5", + { "ascii-0", + "iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5", "iso8859-6", "iso8859-6.8", "iso8859-6.8x", "iso8859-6.16", "iso8859-7", "iso8859-8", "iso8859-9", "iso8859-10", "iso8859-11", "iso8859-12", "iso8859-13", "iso8859-14", diff -N -x '*CVS*' -r -u x11r680/xc/programs/xdm/resource.c x11r682/xc/programs/xdm/resource.c --- xc/programs/xdm/resource.c 2004-04-23 21:54:42.000000000 +0200 +++ xc/programs/xdm/resource.c 2004-12-15 02:53:41.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/xdm/resource.c,v 1.2 2004/04/23 19:54:42 eich Exp $ */ +/* $XdotOrg: xc/programs/xdm/resource.c,v 1.2.4.1 2004/12/15 01:53:41 gisburn Exp $ */ /* $Xorg: resource.c,v 1.4 2001/02/09 02:05:40 xorgcvs Exp $ */ /* @@ -237,7 +237,7 @@ #if !defined(ARC4_RANDOM) { "randomFile", "RandomFile", DM_STRING, &randomFile, DEF_RANDOM_FILE} , -{ "prgndSocket", "PrngdSocket", DM_STRING, &prngdSocket, +{ "prngdSocket", "PrngdSocket", DM_STRING, &prngdSocket, DEF_PRNGD_SOCKET}, { "prngdPort", "PrngdPort", DM_INT, (char **) &prngdPort, DEF_PRNGD_PORT}, diff -N -x '*CVS*' -r -u x11r680/xc/programs/xedit/lisp/lisp.c x11r682/xc/programs/xedit/lisp/lisp.c --- xc/programs/xedit/lisp/lisp.c 2004-09-02 10:40:32.000000000 +0200 +++ xc/programs/xedit/lisp/lisp.c 2004-12-15 02:09:36.000000000 +0100 @@ -46,7 +46,6 @@ #endif #if defined(linux) -#include <asm/page.h> /* for PAGE_SIZE */ #define HAS_GETPAGESIZE #define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/xkbcomp/README.config x11r682/xc/programs/xkbcomp/README.config --- xc/programs/xkbcomp/README.config 2004-09-04 01:41:22.000000000 +0200 +++ xc/programs/xkbcomp/README.config 2005-02-08 01:44:27.000000000 +0100 @@ -6,9 +6,9 @@ Abstract - This document describes how to configure X11R6.8 XKB from a user's - point a few. It converts basic configuration syntax and gives also - a few examples. + This document describes how to configure X11R6.8.2 XKB from a + user's point a few. It converts basic configuration syntax and + gives also a few examples. 1. Overview @@ -193,4 +193,4 @@ compatibility reasons. Avoid using it if it is possible. -$XdotOrg: xc/programs/xkbcomp/README.config,v 1.3 2004/09/03 23:41:22 kem Exp $ +$XdotOrg: xc/programs/xkbcomp/README.config,v 1.3.2.2 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xkbcomp/README.enhancing x11r682/xc/programs/xkbcomp/README.enhancing --- xc/programs/xkbcomp/README.enhancing 2004-09-04 01:41:22.000000000 +0200 +++ xc/programs/xkbcomp/README.enhancing 2005-02-08 01:44:27.000000000 +0100 @@ -132,12 +132,12 @@ as of a vector of columns per each keycode (naturally the dimension of this vector may differ for different keycodes). What is it good for? The group is not very useful unless you intend to use more than one logically different -set of symbols (like more than one alphabet) defined in a single mapping -table. But then, the group has a natural meaning - each symbol set has its -own group and changing it means selecting a different one. XKB approach -allows up to four different groups. The columns inside each group are called -(shift) levels. The X server knows the current group and reports it together -with modifier set and with a keycode in key events. +set of symbols (like more than one alphabet) defined in a single mapping ta- +ble. But then, the group has a natural meaning - each symbol set has its own +group and changing it means selecting a different one. XKB approach allows +up to four different groups. The columns inside each group are called (shift) +levels. The X server knows the current group and reports it together with +modifier set and with a keycode in key events. To sum it up: @@ -506,4 +506,4 @@ And that should be it. Enjoy creating your own xkb mapping. -$XdotOrg: xc/programs/xkbcomp/README.enhancing,v 1.3 2004/09/03 23:41:22 kem Exp $ +$XdotOrg: xc/programs/xkbcomp/README.enhancing,v 1.3.2.1 2005/02/08 00:44:27 kem Exp $ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xkbcomp/rules/Imakefile x11r682/xc/programs/xkbcomp/rules/Imakefile --- xc/programs/xkbcomp/rules/Imakefile 2004-05-29 21:33:22.000000000 +0200 +++ xc/programs/xkbcomp/rules/Imakefile 2004-12-15 03:54:52.000000000 +0100 @@ -1,5 +1,5 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:54:41 cpqbld Exp $ -XCOMM $XdotOrg: xc/programs/xkbcomp/rules/Imakefile,v 1.3 2004/05/29 19:33:22 alanc Exp $ +XCOMM $XdotOrg: xc/programs/xkbcomp/rules/Imakefile,v 1.3.4.1 2004/12/15 02:54:52 gisburn Exp $ DATAFILES = README sgi xorg sun LISTFILES = sgi.lst xorg.lst xorg-it.lst sun.lst xorg.xml @@ -10,4 +10,6 @@ InstallMultiple($(LISTFILES),$(LIBDIR)/xkb/rules) InstallCreateLink($(LIBDIR)/xkb/rules,xorg,xfree86) InstallCreateLink($(LIBDIR)/xkb/rules,xorg.lst,xfree86.lst) +InstallCreateLink($(LIBDIR)/xkb/rules,xorg-it.lst,xfree86-it.lst) +InstallCreateLink($(LIBDIR)/xkb/rules,xorg.xml,xfree86.xml) DependTarget() diff -N -x '*CVS*' -r -u x11r680/xc/programs/xkbcomp/symbols/inet x11r682/xc/programs/xkbcomp/symbols/inet --- xc/programs/xkbcomp/symbols/inet 2004-04-23 21:54:52.000000000 +0200 +++ xc/programs/xkbcomp/symbols/inet 2004-12-15 04:00:47.000000000 +0100 @@ -16,7 +16,7 @@ // setxkbmap 'my_kb_layout' -variant 'my_kb_variant' -model 'my_eak_type' // All keyboards listed here should be also mentioned in -// xc/programs/xkbcomp/rules/xfree86, xfree86.lst and xfree86.xml. +// xc/programs/xkbcomp/rules: xorg, xorg.lst and xorg.xml. // Acer diff -N -x '*CVS*' -r -u x11r680/xc/programs/xkbcomp/symbols/macintosh/us x11r682/xc/programs/xkbcomp/symbols/macintosh/us --- xc/programs/xkbcomp/symbols/macintosh/us 2004-04-23 21:54:54.000000000 +0200 +++ xc/programs/xkbcomp/symbols/macintosh/us 2004-12-15 03:12:54.000000000 +0100 @@ -147,6 +147,7 @@ include "compose(rwin)" include "apple(extended)" + include "srvr_ctrl(xfree86)" // *** FIXME // key <LSGT> { [ quoteleft, asciitilde ] }; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/Imakefile x11r682/xc/programs/xlsfonts/Imakefile --- xc/programs/xlsfonts/Imakefile 2004-04-23 21:54:58.000000000 +0200 +++ xc/programs/xlsfonts/Imakefile 2004-12-13 06:26:50.000000000 +0100 @@ -1,12 +1,26 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:54:53 cpqbld Exp $ +#if BuildXprintLib && BuildXprintClients +# define XlsFontsUseXprint YES +#endif /* BuildXprintLib && BuildXprintClients */ +#if XlsFontsUseXprint + PRINT_LIBS = -lXprintUtil $(XPLIB) + PRINT_DEFS = -DBUILD_PRINTSUPPORT +#endif /* XlsFontsUseXprint */ -XCOMM $XFree86$ DEPLIBS = $(DEPXONLYLIB) -LOCAL_LIBRARIES = $(XONLYLIB) +LOCAL_LIBRARIES = $(PRINT_LIBS) $(XLIB) + DEFINES = $(PRINT_DEFS) SRCS = xlsfonts.c dsimple.c OBJS = xlsfonts.o dsimple.o ComplexProgramTarget(xlsfonts) + +#ifdef HasDocBookTools +all:: xlsfonts.man xlsfonts.html + +ConvertDocBookToManPage(xlsfonts.sgml, xlsfonts.man) +ConvertDocBookToHTML(xlsfonts.sgml, xlsfonts.html) +#endif /* HasDocBookTools */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/dsimple.c x11r682/xc/programs/xlsfonts/dsimple.c --- xc/programs/xlsfonts/dsimple.c 2004-04-23 21:54:58.000000000 +0200 +++ xc/programs/xlsfonts/dsimple.c 2004-12-13 06:21:05.000000000 +0100 @@ -41,6 +41,9 @@ * Written by Mark Lillibridge. Last updated 7/1/87 */ +#ifdef BUILD_PRINTSUPPORT +#include <X11/XprintUtil/xprintutil.h> +#endif /* BUILD_PRINTSUPPORT */ #include "dsimple.h" /* @@ -55,9 +58,13 @@ /* This stuff is defined in the calling program by just_display.h */ -char *program_name = "unknown_program"; -Display *dpy; -int screen; +char *program_name = "unknown_program"; +Display *dpy = NULL; +int screen = 0; +Bool printer_output = False; /* Video or printer output ? */ +#ifdef BUILD_PRINTSUPPORT +XPContext pcontext = None; +#endif /* BUILD_PRINTSUPPORT */ static void _bitmap_error(int, char *); @@ -131,6 +138,43 @@ } +#ifdef BUILD_PRINTSUPPORT +/* + * Get_Printer_Name (argc, argv) Look for -printer, -p, + * If found, remove it from command line. Don't go past a lone -. + */ +char *Get_Printer_Name(pargc, argv) + int *pargc; /* MODIFIED */ + char **argv; /* MODIFIED */ +{ + int argc = *pargc; + char **pargv = argv+1; + char *printername = NULL; + int i; + + for (i = 1; i < argc; i++) { + char *arg = argv[i]; + + if (!strcmp (arg, "-printer") || !strcmp (arg, "-p")) { + if (++i >= argc) usage (); + + printername = argv[i]; + *pargc -= 2; + continue; + } + if (!strcmp(arg,"-")) { + while (i<argc) + *pargv++ = argv[i++]; + break; + } + *pargv++ = arg; + } + + *pargv = NULL; + return (printername); +} +#endif /* BUILD_PRINTSUPPORT */ + /* * Open_Display: Routine to open a display with correct error handling. * Does not require dpy or screen defined on entry. @@ -163,8 +207,60 @@ int *argc; /* MODIFIED */ char **argv; /* MODIFIED */ { - dpy = Open_Display (Get_Display_Name(argc, argv)); - screen = DefaultScreen(dpy); + char *displayname = NULL, + *printername = NULL; + + displayname = Get_Display_Name(argc, argv); +#ifdef BUILD_PRINTSUPPORT + printername = Get_Printer_Name(argc, argv); + + if (displayname && printername) { + fprintf (stderr, "%s: you cannot specify -printer (-p) and -display (-d) at the same time.\n", + program_name); + usage (); + } + + if (printername) { + printer_output = True; + + if (XpuGetPrinter(printername, &dpy, &pcontext) != 1) { + fprintf(stderr, "%s: Cannot open printer '%s'.\n", program_name, printername); + exit(EXIT_FAILURE); + } + + screen = XScreenNumberOfScreen(XpGetScreenOfContext(dpy, pcontext)); + } + else +#endif /* BUILD_PRINTSUPPORT */ + { + printer_output = False; + + dpy = Open_Display (displayname); + screen = XDefaultScreen(dpy); + } +} + +/* + * Close_Display: Close display + */ +void Close_Display(void) +{ + if (dpy == NULL) + return; + +#ifdef BUILD_PRINTSUPPORT + if (printer_output) { + XpuClosePrinterDisplay(dpy, pcontext); + dpy = NULL; + pcontext = None; + printer_output = False; + } + else +#endif /* BUILD_PRINTSUPPORT */ + { + XCloseDisplay(dpy); + dpy = NULL; + } } @@ -517,5 +613,6 @@ vfprintf(stderr, msg, args); va_end(args); fprintf(stderr, "\n"); - exit(1); + Close_Display(); + exit(EXIT_FAILURE); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/dsimple.h x11r682/xc/programs/xlsfonts/dsimple.h --- xc/programs/xlsfonts/dsimple.h 2004-04-23 21:54:58.000000000 +0200 +++ xc/programs/xlsfonts/dsimple.h 2004-12-13 06:21:05.000000000 +0100 @@ -39,11 +39,23 @@ * Send bugs, etc. to chariot@athena.mit.edu. */ + /* Simple helper macros */ +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif /* MAX */ +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif /* MIN */ + /* Global variables used by routines in just_display.c */ extern char *program_name; /* Name of this program */ extern Display *dpy; /* The current display */ extern int screen; /* The current screen */ +extern Bool printer_output; /* Video or printer output ? */ +#ifdef BUILD_PRINTSUPPORT +extern XPContext pcontext; /* The current print context */ +#endif /* BUILD_PRINTSUPPORT */ #define INIT_NAME program_name=argv[0] /* use this in main to setup program_name */ @@ -53,8 +65,12 @@ char *Malloc(unsigned); char *Realloc(char *, int); char *Get_Display_Name(int *, char **); +#ifdef BUILD_PRINTSUPPORT +char *Get_Printer_Name(int *, char **); +#endif /* BUILD_PRINTSUPPORT */ Display *Open_Display(char *); void Setup_Display_And_Screen(int *, char **); +void Close_Display(void); XFontStruct *Open_Font(char *); void Beep(void); Pixmap ReadBitmapFile(Drawable, char *, int *, int *, int *, int *); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/xlsfonts.c x11r682/xc/programs/xlsfonts/xlsfonts.c --- xc/programs/xlsfonts/xlsfonts.c 2004-04-23 21:54:58.000000000 +0200 +++ xc/programs/xlsfonts/xlsfonts.c 2004-12-13 06:26:50.000000000 +0100 @@ -31,407 +31,575 @@ #include <X11/Xos.h> #include <stdio.h> #include <stdlib.h> +#include <limits.h> +#ifdef BUILD_PRINTSUPPORT +#include <X11/XprintUtil/xprintutil.h> +#endif /* BUILD_PRINTSUPPORT */ #include "dsimple.h" -#define N_START 1000 /* Maximum # of fonts to start with */ - -int max_output_line_width = 79; -int output_line_padding = 3; -int columns = 0; - -#define L_SHORT 0 -#define L_MEDIUM 1 -#define L_LONG 2 +#define N_START INT_MAX /* Maximum # of fonts to start with (should + * always be be > 10000 as modern OSes like + * Solaris 8 already have more than 9000 XLFD + * fonts available) */ + +#define L_SHORT 0 +#define L_MEDIUM 1 +#define L_LONG 2 #define L_VERYLONG 3 -Bool sort_output = True; -Bool open_instead_of_list = False; -int long_list = L_SHORT; -int nnames = N_START; -int font_cnt; -int min_max; +static int max_output_line_width = 79; +static int output_line_padding = 3; +static int columns = 0; + +static Bool sort_output = True; +static Bool open_instead_of_list = False; +static int long_list = L_SHORT; +static int nnames = N_START; +static int font_cnt = 0; +static int min_max; + typedef struct { - char *name; - XFontStruct *info; + char *name; + XFontStruct *info; +#ifdef BUILD_PRINTSUPPORT + char *listfonts_modes; +#endif /* BUILD_PRINTSUPPORT */ } FontList; -FontList *font_list; +static FontList *font_list = NULL; -static void get_list(char *); +/* Local prototypes */ +#ifdef BUILD_PRINTSUPPORT +static Bool IsListfontsModesChangeSupported(char *mode); +static int SetListfontsModes(const char *attrname, Bool enableattr); +#endif /* BUILD_PRINTSUPPORT */ +static void get_list(char *pattern); +static int compare(const void *arg1, const void *arg2); static void show_fonts(void); -static void copy_number(char **, char **, int, int); -static void do_query_font(Display *, char *); -static int compare(const void *, const void *); -#ifndef max -static int max(int, int); -#endif -static int IgnoreError(Display *, XErrorEvent *); -static void PrintProperty(XFontProp *); -static void ComputeFontType(XFontStruct *); -static void print_character_metrics(register XFontStruct *); - - -void -usage() -{ - fprintf (stderr,"usage: %s [-options] [-fn pattern]\n", program_name); - fprintf (stderr, "where options include:\n"); - fprintf (stderr, - " -l[l[l]] give long info about each font\n"); - fprintf (stderr, - " -m give character min and max bounds\n"); - fprintf (stderr, - " -C force columns\n"); - fprintf (stderr, - " -1 force single column\n"); - fprintf (stderr, - " -u keep output unsorted\n"); - fprintf (stderr, - " -o use OpenFont/QueryFont instead of ListFonts\n"); - fprintf (stderr, - " -w width maximum width for multiple columns\n"); - fprintf (stderr, - " -n columns number of columns if multi column\n"); - fprintf (stderr, - " -display displayname X server to contact\n"); - fprintf (stderr, - "\n"); - exit(1); -} - -int -main(argc, argv) -int argc; -char **argv; -{ - int argcnt = 0, i; - - INIT_NAME; - - /* Handle command line arguments, open display */ - Setup_Display_And_Screen(&argc, argv); - for (argv++, argc--; argc; argv++, argc--) { - if (argv[0][0] == '-') { - if (argcnt > 0) usage (); - for (i=1; argv[0][i]; i++) - switch(argv[0][i]) { - case 'l': - long_list++; - break; - case 'm': - min_max++; - break; - case 'C': - columns = 0; - break; - case '1': - columns = 1; - break; - case 'f': - if (--argc <= 0) usage (); - argcnt++; - argv++; - get_list(argv[0]); - goto next; - case 'w': - if (--argc <= 0) usage (); - argv++; - max_output_line_width = atoi(argv[0]); - goto next; - case 'n': - if (--argc <= 0) usage (); - argv++; - columns = atoi(argv[0]); - goto next; - case 'o': - open_instead_of_list = True; - break; - case 'u': - sort_output = False; - break; - default: - usage(); - break; - } - if (i == 1) - usage(); - } else { - argcnt++; - get_list(argv[0]); - } - next: ; - } - if (argcnt == 0) - get_list("*"); - show_fonts(); - exit(0); -} - -void -get_list(pattern) - char *pattern; -{ - int available = nnames+1, - i; - char **fonts; - XFontStruct *info; - - /* Get list of fonts matching pattern */ - for (;;) { - if (open_instead_of_list) { - info = XLoadQueryFont (dpy, pattern); - - if (info) { - fonts = &pattern; - available = 1; - XUnloadFont (dpy, info->fid); - } else { - fonts = NULL; - } - break; - } - - if (long_list == L_MEDIUM) - fonts = XListFontsWithInfo(dpy, - pattern, nnames, &available, &info); - else - fonts = XListFonts(dpy, pattern, nnames, &available); - if (fonts == NULL || available < nnames) - break; - if (long_list == L_MEDIUM) - XFreeFontInfo(fonts, info, available); - else - XFreeFontNames(fonts); - nnames = available * 2; - } - - if (fonts == NULL) { - fprintf(stderr, "%s: pattern \"%s\" unmatched\n", - program_name, pattern); - return; - } - - font_list = (FontList *)Realloc((char *)font_list, - (font_cnt + available) * sizeof(FontList)); - for (i=0; i<available; i++) { - font_list[font_cnt].name = fonts[i]; - if (long_list == L_MEDIUM) - font_list[font_cnt].info = info + i; - else - font_list[font_cnt].info = NULL; - font_cnt++; - } -} - -static int -compare(arg1, arg2) - const void *arg1; - const void *arg2; -{ - const FontList *f1 = arg1; - const FontList *f2 = arg2; - const char *p1 = f1->name; - const char *p2 = f2->name; - - while (*p1 && *p2 && *p1 == *p2) - p1++, p2++; - return(*p1 - *p2); -} - -void -show_fonts() -{ - int i; - - if (font_cnt == 0) - return; - - /* first sort the output */ - if (sort_output) qsort(font_list, font_cnt, sizeof(FontList), compare); - - if (long_list > L_MEDIUM) { - for (i = 0; i < font_cnt; i++) { - do_query_font (dpy, font_list[i].name); - } - return; - } - - if (long_list == L_MEDIUM) { - XFontStruct *pfi; - char *string; - - printf("DIR "); - printf("MIN "); - printf("MAX "); - printf("EXIST "); - printf("DFLT "); - printf("PROP "); - printf("ASC "); - printf("DESC "); - printf("NAME"); - printf("\n"); - for (i=0; i<font_cnt; i++) { - pfi = font_list[i].info; - if (!pfi) { - fprintf (stderr, - "%s: no font information for font \"%s\".\n", - program_name, - font_list[i].name ? - font_list[i].name : ""); - continue; - } - switch(pfi->direction) { - case FontLeftToRight: string = "-->"; break; - case FontRightToLeft: string = "<--"; break; - default: string = "???"; break; - } - printf("%-4s", string); - if (pfi->min_byte1 == 0 - && pfi->max_byte1 == 0) { - printf(" %3d ", pfi->min_char_or_byte2); - printf(" %3d ", pfi->max_char_or_byte2); - } else { - printf("*%3d ", pfi->min_byte1); - printf("*%3d ", pfi->max_byte1); - } - printf("%5s ", pfi->all_chars_exist ? "all" : "some"); - printf("%4d ", pfi->default_char); - printf("%4d ", pfi->n_properties); - printf("%3d ", pfi->ascent); - printf("%4d ", pfi->descent); - printf("%s\n", font_list[i].name); - if (min_max) { - char min[ BUFSIZ ], - max[ BUFSIZ ]; - char *pmax = max, - *pmin = min; - - strcpy(pmin, " min(l,r,w,a,d) = ("); - strcpy(pmax, " max(l,r,w,a,d) = ("); - pmin += strlen(pmin); - pmax += strlen(pmax); - - copy_number(&pmin, &pmax, - pfi->min_bounds.lbearing, - pfi->max_bounds.lbearing); - *pmin++ = *pmax++ = ','; - copy_number(&pmin, &pmax, - pfi->min_bounds.rbearing, - pfi->max_bounds.rbearing); - *pmin++ = *pmax++ = ','; - copy_number(&pmin, &pmax, - pfi->min_bounds.width, - pfi->max_bounds.width); - *pmin++ = *pmax++ = ','; - copy_number(&pmin, &pmax, - pfi->min_bounds.ascent, - pfi->max_bounds.ascent); - *pmin++ = *pmax++ = ','; - copy_number(&pmin, &pmax, - pfi->min_bounds.descent, - pfi->max_bounds.descent); - *pmin++ = *pmax++ = ')'; - *pmin = *pmax = '\0'; - printf("%s\n", min); - printf("%s\n", max); - } - } - return; - } - - if ((columns == 0 && isatty(1)) || columns > 1) { - int width, - max_width = 0, - lines_per_column, - j, - index; - - for (i=0; i<font_cnt; i++) { - width = strlen(font_list[i].name); - if (width > max_width) - max_width = width; - } - if (max_width == 0) - Fatal_Error("all %d fontnames listed are zero length", - font_cnt); - - if (columns == 0) { - if ((max_width * 2) + output_line_padding > - max_output_line_width) { - columns = 1; - } else { - max_width += output_line_padding; - columns = ((max_output_line_width + - output_line_padding) / max_width); - } - } else { - max_width += output_line_padding; - } - if (columns <= 1) goto single_column; - - if (font_cnt < columns) - columns = font_cnt; - lines_per_column = (font_cnt + columns - 1) / columns; - - for (i=0; i<lines_per_column; i++) { - for (j=0; j<columns; j++) { - index = j * lines_per_column + i; - if (index >= font_cnt) - break; - if (j+1 == columns) - printf("%s", font_list[ index ].name); - else - printf("%-*s", - max_width, - font_list[ index ].name); - } - printf("\n"); - } - return; - } - - single_column: - for (i=0; i<font_cnt; i++) - printf("%s\n", font_list[i].name); -} - -#ifndef max -static int -max(i, j) - int i, j; -{ - if (i > j) - return (i); - return(j); -} -#endif - -void -copy_number(pp1, pp2, n1, n2) - char **pp1, **pp2; - int n1, n2; -{ - char *p1 = *pp1; - char *p2 = *pp2; - int w; - - sprintf(p1, "%d", n1); - sprintf(p2, "%d", n2); - w = max(strlen(p1), strlen(p2)); - sprintf(p1, "%*d", w, n1); - sprintf(p2, "%*d", w, n2); - p1 += strlen(p1); - p2 += strlen(p2); - *pp1 = p1; - *pp2 = p2; +static void copy_number(char **pp1, char**pp2, int n1, int n2); +static int IgnoreError(Display *disp, XErrorEvent *event); +static void PrintProperty(XFontProp *prop); +static void ComputeFontType(XFontStruct *fs); +static void print_character_metrics(register XFontStruct *info); +static void do_query_font (Display *dpy, char *name); + +void usage(void) +{ + fprintf (stderr, "usage: %s [-options] [-fn pattern]\n", program_name); + fprintf (stderr, "where options include:\n"); + fprintf (stderr, " -l[l[l]] give long info about each font\n"); + fprintf (stderr, " -m give character min and max bounds\n"); + fprintf (stderr, " -C force columns\n"); + fprintf (stderr, " -1 force single column\n"); + fprintf (stderr, " -u keep output unsorted\n"); +#ifdef BUILD_PRINTSUPPORT + fprintf (stderr, " -b list printer builtin fonts\n"); + fprintf (stderr, " -B do not list printer builtin fonts\n"); + fprintf (stderr, " -g list glyph fonts\n"); + fprintf (stderr, " -G do not list glyph fonts\n"); + fprintf (stderr, " -x mode enable listfont mode\n"); + fprintf (stderr, " -X mode disable listfont mode\n"); +#endif /* BUILD_PRINTSUPPORT */ + fprintf (stderr, " -o use OpenFont/QueryFont instead of ListFonts\n"); + fprintf (stderr, " -w width maximum width for multiple columns\n"); + fprintf (stderr, " -n columns number of columns if multi column\n"); + fprintf (stderr, " -display displayname X server to contact\n"); + fprintf (stderr, " -d displayname (alias for -display displayname)\n"); +#ifdef BUILD_PRINTSUPPORT + fprintf (stderr, " -printer printername printer to use\n"); + fprintf (stderr, " -p printername (alias for -p printername)\n"); +#endif /* BUILD_PRINTSUPPORT */ + fprintf (stderr, "\n"); + Close_Display(); + exit(EXIT_FAILURE); +} + +int main(int argc, char **argv) +{ + int argcnt = 0, i; + char *mode; + + INIT_NAME; + + /* Handle command line arguments, open display */ + Setup_Display_And_Screen(&argc, argv); + +#ifdef BUILD_PRINTSUPPORT + if (printer_output) { + /* XListFonts*()/XLoadFont*() honor xp-listfonts-modes only + * if there is an context _SET_ for this display */ + XpSetContext(dpy, pcontext); + } +#endif /* BUILD_PRINTSUPPORT */ + + for (argv++, argc--; argc; argv++, argc--) { + if (argv[0][0] == '-') { + if (argcnt > 0) usage (); + for (i=1; argv[0][i]; i++) + switch(argv[0][i]) { + case 'l': + long_list++; + break; + case 'm': + min_max++; + break; + case 'C': + columns = 0; + break; + case '1': + columns = 1; + break; + case 'f': /* "-fn" */ + if (--argc <= 0) usage (); + if (argv[0][i+1] != 'n') usage (); + argcnt++; + argv++; + get_list(argv[0]); + goto next; + case 'w': + if (--argc <= 0) usage (); + argv++; + max_output_line_width = atoi(argv[0]); + goto next; + case 'n': + if (--argc <= 0) usage (); + argv++; + columns = atoi(argv[0]); + goto next; + case 'o': + open_instead_of_list = True; + break; + case 'u': + sort_output = False; + break; +#ifdef BUILD_PRINTSUPPORT + case 'b': + mode = "xp-list-internal-printer-fonts"; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, True); + break; + case 'B': + mode = "xp-list-internal-printer-fonts"; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, False); + break; + case 'g': + mode = "xp-list-glyph-fonts"; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, True); + break; + case 'G': + mode = "xp-list-glyph-fonts"; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, False); + break; + case 'x': + if (--argc <= 0) usage (); + argv++; + mode = argv[0]; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i-1]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, True); + goto next; + case 'X': + if (--argc <= 0) usage (); + argv++; + mode = argv[0]; + if (!printer_output) + Fatal_Error("Option '%c' only supported for printers.", argv[0][i-1]); + if (!IsListfontsModesChangeSupported(mode)) + Fatal_Error("Printer does not support changing '%s'.", mode); + SetListfontsModes(mode, False); + goto next; +#endif /* BUILD_PRINTSUPPORT */ + default: + usage(); + break; + } + if (i == 1) + usage(); + } else { + argcnt++; + get_list(argv[0]); + } + next: ; + } + + if (argcnt == 0) + get_list("*"); + + show_fonts(); + + Close_Display(); + return EXIT_SUCCESS; +} + +#ifdef BUILD_PRINTSUPPORT +/* This should be moved to XprintUtils */ +static +Bool IsListfontsModesChangeSupported(char *mode) +{ + char *value; + Bool isSupported; + + value = XpGetOneAttribute(dpy, pcontext, XPPrinterAttr, "xp-listfonts-modes-supported"); + if (!value) + return False; + + isSupported = (strstr(value, mode) != NULL)?(True):(False); + XFree(value); + + return isSupported; +} + +/* XXX: This should be moved to XprintUtils (and should have a Document/Page-level + * option and should verify that the matching leven supports xp-listfonts-modes + * changes)*/ +static +int SetListfontsModes(const char *attrname, Bool enableattr) +{ + char *value, + *newvalue; + + value = XpGetOneAttribute(dpy, pcontext, XPDocAttr, "xp-listfonts-modes"); + if (!value) + value = strdup(""); + + /* Set attribute */ + if (enableattr) + { + /* Return success if |attrname| is already set */ + if (strstr(value, attrname) != NULL) + { + XFree(value); + return 1; /* success */ + } + + newvalue = malloc(strlen(value) + strlen(attrname) + 2); + if (!newvalue) + { + XFree(value); + Fatal_Error("SetListfontsModes: No memory."); + } + + sprintf(newvalue, "%s %s", value, attrname); + XpuSetOneAttribute(dpy, pcontext, XPDocAttr, "*xp-listfonts-modes", newvalue, XPAttrMerge); + + free(newvalue); + XFree(value); + return 1; /* success */ + } + else + { + char *s, /* copy string "source" */ + *d; /* copy string "destination" */ + + /* Return success if |attrname| not set */ + d = strstr(value, attrname); + if (d == NULL) + { + XFree(value); + return 1; /* success */ + } + + /* strip |attrname| from |value| */ + s = d+strlen(attrname); + while( (*d++ = *s++) != '\0' ) + ; + + XpuSetOneAttribute(dpy, pcontext, XPDocAttr, "*xp-listfonts-modes", value, XPAttrMerge); + + XFree(value); + return 1; /* success */ + } +} +#endif /* BUILD_PRINTSUPPORT */ + +static +void get_list(char *pattern) +{ + int available = nnames+1, + i; + char **fonts; + XFontStruct *info; + + /* Get list of fonts matching pattern */ + for (;;) { + if (open_instead_of_list) { + info = XLoadQueryFont (dpy, pattern); + + if (info) { + fonts = &pattern; + available = 1; + XUnloadFont (dpy, info->fid); + } else { + fonts = NULL; + } + break; + } + + if (long_list == L_MEDIUM) + fonts = XListFontsWithInfo(dpy, pattern, nnames, &available, &info); + else + fonts = XListFonts(dpy, pattern, nnames, &available); + if (fonts == NULL || available < nnames) + break; + if (long_list == L_MEDIUM) + XFreeFontInfo(fonts, info, available); + else + XFreeFontNames(fonts); + nnames = available * 2; + } + + if (fonts == NULL) { + fprintf(stderr, "%s: pattern \"%s\" unmatched\n", + program_name, pattern); + return; + } + + font_list = (FontList *)Realloc((char *)font_list, + (font_cnt + available) * sizeof(FontList)); + for (i=0; i<available; i++) { + font_list[font_cnt].name = fonts[i]; + if (long_list == L_MEDIUM) + font_list[font_cnt].info = info + i; + else + font_list[font_cnt].info = NULL; + +#ifdef BUILD_PRINTSUPPORT + if (printer_output) { + char *listfonts_modes; + + listfonts_modes = XpGetOneAttribute(dpy, pcontext, XPDocAttr, "xp-listfonts-modes"); + + /* Save status of xp-listfonts-modes */ + font_list[font_cnt].listfonts_modes = strdup(listfonts_modes?listfonts_modes:""); + + if (listfonts_modes) + XFree(listfonts_modes); + } + else + { + font_list[font_cnt].listfonts_modes = NULL; + } +#endif /* BUILD_PRINTSUPPORT */ + + font_cnt++; + } +} + +static +int compare(const void *arg1, const void *arg2) +{ + const FontList *f1 = arg1; + const FontList *f2 = arg2; + const char *p1 = f1->name; + const char *p2 = f2->name; + + while (*p1 && *p2 && *p1 == *p2) + p1++, p2++; + return(*p1 - *p2); +} + +static +void show_fonts(void) +{ + int i; + + if (font_cnt == 0) + return; + + /* first sort the output */ + if (sort_output) qsort(font_list, font_cnt, sizeof(FontList), compare); + + if (long_list > L_MEDIUM) { + for (i = 0; i < font_cnt; i++) { +#ifdef BUILD_PRINTSUPPORT + if (printer_output) { + /* Restore saved xp-listfonts-modes status */ + XpuSetOneAttribute(dpy, pcontext, XPDocAttr, "*xp-listfonts-modes", font_list[i].listfonts_modes, XPAttrMerge); + } +#endif /* BUILD_PRINTSUPPORT */ + + do_query_font (dpy, font_list[i].name); + } + return; + } + + if (long_list == L_MEDIUM) { + XFontStruct *pfi; + char *string; + + printf("DIR "); + printf("MIN "); + printf("MAX "); + printf("EXIST "); + printf("DFLT "); + printf("PROP "); + printf("ASC "); + printf("DESC "); + printf("NAME"); + printf("\n"); + for (i=0; i<font_cnt; i++) { + pfi = font_list[i].info; + if (!pfi) { + fprintf(stderr, "%s: no font information for font \"%s\".\n", + program_name, + font_list[i].name ? + font_list[i].name : ""); + continue; + } + switch(pfi->direction) { + case FontLeftToRight: string = "-->"; break; + case FontRightToLeft: string = "<--"; break; + default: string = "???"; break; + } + printf("%-4s", string); + if (pfi->min_byte1 == 0 && + pfi->max_byte1 == 0) { + printf(" %3d ", pfi->min_char_or_byte2); + printf(" %3d ", pfi->max_char_or_byte2); + } else { + printf("*%3d ", pfi->min_byte1); + printf("*%3d ", pfi->max_byte1); + } + printf("%5s ", pfi->all_chars_exist ? "all" : "some"); + printf("%4d ", pfi->default_char); + printf("%4d ", pfi->n_properties); + printf("%3d ", pfi->ascent); + printf("%4d ", pfi->descent); + printf("%s\n", font_list[i].name); + if (min_max) { + char min[ BUFSIZ ], + max[ BUFSIZ ]; + char *pmax = max, + *pmin = min; + + strcpy(pmin, " min(l,r,w,a,d) = ("); + strcpy(pmax, " max(l,r,w,a,d) = ("); + pmin += strlen(pmin); + pmax += strlen(pmax); + + copy_number(&pmin, &pmax, + pfi->min_bounds.lbearing, + pfi->max_bounds.lbearing); + *pmin++ = *pmax++ = ','; + copy_number(&pmin, &pmax, + pfi->min_bounds.rbearing, + pfi->max_bounds.rbearing); + *pmin++ = *pmax++ = ','; + copy_number(&pmin, &pmax, + pfi->min_bounds.width, + pfi->max_bounds.width); + *pmin++ = *pmax++ = ','; + copy_number(&pmin, &pmax, + pfi->min_bounds.ascent, + pfi->max_bounds.ascent); + *pmin++ = *pmax++ = ','; + copy_number(&pmin, &pmax, + pfi->min_bounds.descent, + pfi->max_bounds.descent); + *pmin++ = *pmax++ = ')'; + *pmin = *pmax = '\0'; + printf("%s\n", min); + printf("%s\n", max); + } + } + return; + } + + if ((columns == 0 && isatty(1)) || columns > 1) { + int width, + max_width = 0, + lines_per_column, + j, + index; + + for (i=0; i<font_cnt; i++) { + width = strlen(font_list[i].name); + if (width > max_width) + max_width = width; + } + if (max_width == 0) + Fatal_Error("all %d fontnames listed are zero length", font_cnt); + + if (columns == 0) { + if ((max_width * 2) + output_line_padding > + max_output_line_width) { + columns = 1; + } else { + max_width += output_line_padding; + columns = ((max_output_line_width + + output_line_padding) / max_width); + } + } else { + max_width += output_line_padding; + } + if (columns <= 1) goto single_column; + + if (font_cnt < columns) + columns = font_cnt; + lines_per_column = (font_cnt + columns - 1) / columns; + + for (i=0; i<lines_per_column; i++) { + for (j=0; j<columns; j++) { + index = j * lines_per_column + i; + if (index >= font_cnt) + break; + if (j+1 == columns) + printf("%s", font_list[ index ].name); + else + printf("%-*s", + max_width, + font_list[ index ].name); + } + printf("\n"); + } + return; + } + + single_column: + for (i=0; i<font_cnt; i++) + printf("%s\n", font_list[i].name); +} + +static +void copy_number(char **pp1, char**pp2, int n1, int n2) +{ + char *p1 = *pp1; + char *p2 = *pp2; + int w; + + sprintf(p1, "%d", n1); + sprintf(p2, "%d", n2); + w = MAX(strlen(p1), strlen(p2)); + sprintf(p1, "%*d", w, n1); + sprintf(p2, "%*d", w, n2); + p1 += strlen(p1); + p2 += strlen(p2); + *pp1 = p1; + *pp2 = p2; } /* ARGSUSED */ -static int IgnoreError(disp, event) - Display *disp; - XErrorEvent *event; +static +int IgnoreError(Display *disp, XErrorEvent *event) { return 0; } @@ -446,8 +614,8 @@ #define PrintBounds(_what,_ptr) \ { register XCharStruct *p = (_ptr); \ - printf (bounds_metrics_fmt, _what, p->width, p->lbearing, \ - p->rbearing, p->ascent, p->descent, p->attributes); } + printf (bounds_metrics_fmt, (_what), p->width, p->lbearing, \ + p->rbearing, p->ascent, p->descent, p->attributes); } static char* stringValued [] = { /* values are atoms */ @@ -474,7 +642,14 @@ "RASTERIZER_VERSION", /* other registered font properties (see the X.org Registry, sec. 15) */ + +#ifdef BUILD_PRINTSUPPORT + /* Used by Xprint's Postscript and PDF DDX */ "_ADOBE_POSTSCRIPT_FONTNAME", + + /* Used by Xprint's PCL DDXs */ + "PCL_FONT_NAME", +#endif /* BUILD_PRINTSUPPORT */ /* unregistered font properties */ "CHARSET_COLLECTIONS", @@ -488,8 +663,8 @@ NULL }; -static void PrintProperty (prop) - XFontProp *prop; +static +void PrintProperty(XFontProp *prop) { char *atom, *value; char nosuch[40]; @@ -498,9 +673,9 @@ atom = XGetAtomName(dpy, prop->name); if (!atom) { - atom = nosuch; - nosuch[0] = '\0'; - (void)sprintf (atom, "No such atom = %ld", prop->name); + atom = nosuch; + nosuch[0] = '\0'; + (void)sprintf (atom, "No such atom = %ld", prop->name); } printf (" %s", atom); @@ -510,20 +685,20 @@ putchar(' '); for (i = 0; ; i++) { - if (stringValued[i] == NULL) { - printf ("%ld\n", prop->card32); - break; - } - if (strcmp(stringValued[i], atom) == 0) { - value = XGetAtomName(dpy, prop->card32); - if (value == NULL) - printf ("%ld (expected string value)\n", prop->card32); - else { - printf ("%s\n", value); - XFree (value); - } - break; - } + if (stringValued[i] == NULL) { + printf ("%ld\n", prop->card32); + break; + } + if (strcmp(stringValued[i], atom) == 0) { + value = XGetAtomName(dpy, prop->card32); + if (value == NULL) + printf ("%ld (expected string value)\n", prop->card32); + else { + printf ("%s\n", value); + XFree (value); + } + break; + } } if (atom != nosuch) XFree (atom); XSetErrorHandler (oldhandler); @@ -531,8 +706,7 @@ static void -ComputeFontType (fs) - XFontStruct *fs; +ComputeFontType(XFontStruct *fs) { int i; Bool char_cell = True; @@ -542,66 +716,65 @@ printf (" font type:\t\t"); if (fs->min_bounds.width != fs->max_bounds.width) { - printf ("Proportional (min and max widths not equal)\n"); - return; + printf ("Proportional (min and max widths not equal)\n"); + return; } if (awatom) { - for (i = 0; i < fs->n_properties; i++) { - if (fs->properties[i].name == awatom && - (fs->max_bounds.width * 10) != fs->properties[i].card32) { - char_cell = False; - reason = "font width not equal to AVERAGE_WIDTH"; - break; - } - } + for (i = 0; i < fs->n_properties; i++) { + if (fs->properties[i].name == awatom && + (fs->max_bounds.width * 10) != fs->properties[i].card32) { + char_cell = False; + reason = "font width not equal to AVERAGE_WIDTH"; + break; + } + } } if (fs->per_char) { - for (i = fs->min_char_or_byte2, cs = fs->per_char; - i <= fs->max_char_or_byte2; i++, cs++) { - if (cs->width == 0) continue; - if (cs->width != fs->max_bounds.width) { - /* this shouldn't happen since we checked above */ - printf ("Proportional (characters not all the same width)\n"); - return; - } - if (char_cell) { - if (cs->width < 0) { - if (!(cs->width <= cs->lbearing && - cs->lbearing <= cs->rbearing && - cs->rbearing <= 0)) { - char_cell = False; - reason = "ink outside bounding box"; - } - } else { - if (!(0 <= cs->lbearing && - cs->lbearing <= cs->rbearing && - cs->rbearing <= cs->width)) { - char_cell = False; - reason = "ink outside bounding box"; - } - } - if (!(cs->ascent <= fs->ascent && - cs->descent <= fs->descent)) { - char_cell = False; - reason = "characters not all same ascent or descent"; - } - } - } + for (i = fs->min_char_or_byte2, cs = fs->per_char; + i <= fs->max_char_or_byte2; i++, cs++) { + if (cs->width == 0) continue; + if (cs->width != fs->max_bounds.width) { + /* this shouldn't happen since we checked above */ + printf ("Proportional (characters not all the same width)\n"); + return; + } + if (char_cell) { + if (cs->width < 0) { + if (!(cs->width <= cs->lbearing && + cs->lbearing <= cs->rbearing && + cs->rbearing <= 0)) { + char_cell = False; + reason = "ink outside bounding box"; + } + } else { + if (!(0 <= cs->lbearing && + cs->lbearing <= cs->rbearing && + cs->rbearing <= cs->width)) { + char_cell = False; + reason = "ink outside bounding box"; + } + } + if (!(cs->ascent <= fs->ascent && + cs->descent <= fs->descent)) { + char_cell = False; + reason = "characters not all same ascent or descent"; + } + } + } } printf ("%s", char_cell ? "Character Cell" : "Monospaced"); if (reason) printf (" (%s)", reason); printf ("\n"); - + return; } static void -print_character_metrics (info) - register XFontStruct *info; +print_character_metrics(register XFontStruct *info) { register XCharStruct *pc = info->per_char; register int i, j; @@ -610,49 +783,46 @@ printf (" character metrics:\n"); saven = ((info->min_byte1 << 8) | info->min_char_or_byte2); for (j = info->min_byte1; j <= info->max_byte1; j++) { - n = saven; - for (i = info->min_char_or_byte2; i <= info->max_char_or_byte2; i++) { - char *s = XKeysymToString ((KeySym) n); - printf (char_metrics_fmt, j, i, n, pc->width, pc->lbearing, - pc->rbearing, pc->ascent, pc->descent, pc->attributes, - s ? s : "."); - pc++; - n++; - } - saven += 256; + n = saven; + for (i = info->min_char_or_byte2; i <= info->max_char_or_byte2; i++) { + char *s = XKeysymToString ((KeySym) n); + printf (char_metrics_fmt, j, i, n, pc->width, pc->lbearing, + pc->rbearing, pc->ascent, pc->descent, pc->attributes, + s ? s : "."); + pc++; + n++; + } + saven += 256; } } - -void -do_query_font (dpy, name) - Display *dpy; - char *name; +static +void do_query_font (Display *dpy, char *name) { register int i; register XFontStruct *info = XLoadQueryFont (dpy, name); if (!info) { - fprintf (stderr, "%s: unable to get info about font \"%s\"\n", - program_name, name); - return; + fprintf (stderr, "%s: unable to get info about font \"%s\"\n", + program_name, name); + return; } printf ("name: %s\n", name ? name : "(nil)"); printf (" direction:\t\t%s\n", ((info->direction == FontLeftToRight) - ? "left to right" : "right to left")); + ? "left to right" : "right to left")); printf (" indexing:\t\t%s\n", - ((info->min_byte1 == 0 && info->max_byte1 == 0) ? "linear" : - "matrix")); + ((info->min_byte1 == 0 && info->max_byte1 == 0) ? "linear" : + "matrix")); printf (" rows:\t\t\t0x%02x thru 0x%02x (%d thru %d)\n", - info->min_byte1, info->max_byte1, - info->min_byte1, info->max_byte1); + info->min_byte1, info->max_byte1, + info->min_byte1, info->max_byte1); printf (" columns:\t\t0x%02x thru 0x%02x (%d thru %d)\n", - info->min_char_or_byte2, info->max_char_or_byte2, - info->min_char_or_byte2, info->max_char_or_byte2); + info->min_char_or_byte2, info->max_char_or_byte2, + info->min_char_or_byte2, info->max_char_or_byte2); printf (" all chars exist:\t%s\n", - (info->all_chars_exist) ? "yes" : "no"); + (info->all_chars_exist) ? "yes" : "no"); printf (" default char:\t\t0x%04x (%d)\n", - info->default_char, info->default_char); + info->default_char, info->default_char); printf (" ascent:\t\t%d\n", info->ascent); printf (" descent:\t\t%d\n", info->descent); ComputeFontType (info); @@ -660,11 +830,13 @@ PrintBounds ("min", &info->min_bounds); PrintBounds ("max", &info->max_bounds); if (info->per_char && long_list >= L_VERYLONG) - print_character_metrics (info); + print_character_metrics (info); printf (" properties:\t\t%d\n", info->n_properties); for (i = 0; i < info->n_properties; i++) - PrintProperty (&info->properties[i]); + PrintProperty (&info->properties[i]); printf ("\n"); XFreeFontInfo (NULL, info, 1); } + + diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/xlsfonts.man x11r682/xc/programs/xlsfonts/xlsfonts.man --- xc/programs/xlsfonts/xlsfonts.man 2004-04-23 21:54:58.000000000 +0200 +++ xc/programs/xlsfonts/xlsfonts.man 2004-12-15 08:17:48.000000000 +0100 @@ -1,105 +1,175 @@ -.\" $Xorg: xlsfonts.man,v 1.4 2001/02/09 02:05:55 xorgcvs Exp $ -.\" Copyright 1988, 1998 The Open Group -.\" -.\" 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. -.\" -.\" 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 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -.\" OTHER DEALINGS IN THE SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall -.\" not be used in advertising or otherwise to promote the sale, use or -.\" other dealings in this Software without prior written authorization -.\" from The Open Group. -.\" -.\" $XFree86: xc/programs/xlsfonts/xlsfonts.man,v 1.7 2001/01/27 18:21:18 dawes Exp $ -.\" -.TH XLSFONTS 1 __xorgversion__ +.\" -*- coding: us-ascii -*- +.TH xlsfonts __appmansuffix__ "8 October 2004" .SH NAME xlsfonts \- server font list displayer for X .SH SYNOPSIS -.B xlsfonts -[\-options ...] [\-fn pattern] +.ad l +\fBxlsfonts\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-display \fBhost:dpy\fR\fR] [\fB\-l\fR] [\fB\-ll\fR] [\fB\-lll\fR] [\fB\-m\fR] [\fB\-C\fR] [\fB\-1\fR] [\fB\-w \fBwidth\fR\fR] [\fB\-n \fBcolumns\fR\fR] [\fB\-u\fR] [\fB\-o\fR] [\fB\-fn \fBpattern\fR\fR] +'in \n(.iu-\nxu +.ad b +.PP +.ad l +\fBxlsfonts\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +\fB\-printer \fBprintername\fR\fR [\fB\-l\fR] [\fB\-ll\fR] [\fB\-lll\fR] [\fB\-m\fR] [\fB\-C\fR] [\fB\-1\fR] [\fB\-w \fBwidth\fR\fR] [\fB\-n \fBcolumns\fR\fR] [\fB\-u\fR] [\fB\-o\fR] [\fB\-b\fR] [\fB\-B\fR] [\fB\-g\fR] [\fB\-G\fR] [\fB\-x \fBmode\fR\fR] [\fB\-X \fBmode\fR\fR] [\fB\-fn \fBpattern\fR\fR] +'in \n(.iu-\nxu +.ad b .SH DESCRIPTION -.I Xlsfonts -lists the fonts that match the given \fIpattern\fP. -The wildcard character "*" may be used to match any sequence of -characters (including none), and "?" to match any single character. +xlsfonts lists the fonts that match the given pattern. +The wildcard character "*" may be used to match any sequence of characters +(including none), and "?" to match any single character. If no pattern is given, "*" is assumed. .PP -The "*" and "?" characters must be quoted to prevent them from -being expanded by the shell. -.SH "OPTIONS" -.PP -.TP 8 -.B \-display \fIhost\fP:\fIdpy\fP +The "*" and "?" characters must be quoted to prevent them from being expanded by the shell. +.SH OPTIONS +.TP +\fB\-display \fIhost:dpy\fB\fR This option specifies the X server to contact. -.PP -.TP 8 -.B \-l -Lists some attributes of the font on one line in addition to its name. -.TP 8 -.B \-ll -Lists font properties in addition to \fB\-l\fP output. -.TP 8 -.B \-lll -Lists character metrics in addition to \fB\-ll\fP output. -.TP 8 -.B \-m -This option indicates that long listings should also print the minimum and -maximum bounds of each font. -.TP 8 -.B \-C -This option indicates that listings should use multiple columns. This is the -same as \fB\-n 0\fP. -.TP 8 -.B \-1 -This option indicates that listings should use a single column. This is the -same as \fB\-n 1\fP. -.TP 8 -.B \-w \fIwidth\fP -This option specifies the width in characters that should be used in -figuring out how many columns to print. The default is 79. -.TP 8 -.B \-n \fIcolumns\fP -This option specifies the number of columns to use in displaying the output. -By default, it will attempt to fit as many columns of font names into the -number of character specified by \fB\-w \fIwidth\fR. -.TP 8 -.B \-u +.TP +\fB\-printer \fIprintername\fB\fR +This option specifies the Xprint printer to contact. +.TP +\fB\-d \fIhost:dpy\fB\fR +Same as \fB\-display \fIhost:dpy\fB\fR. +.TP +\fB\-p \fIprintername\fB\fR +Same as \fB\-printer \fIprintername\fB\fR. +.TP +\fB\-l\fR +Lists some attributes of the font on one line in addition +to its name. +.TP +\fB\-ll\fR +Lists font properties in addition to \fB\-l\fR output. +.TP +\fB\-lll\fR +Lists character metrics in addition to \fB\-ll\fR output. +.TP +\fB\-m\fR +This option indicates that long listings should also print +the minimum and maximum bounds of each font. +.TP +\fB\-C\fR +This option indicates that listings should use multiple columns. +This is the same as \fB\-n 0\fR. +.TP +\fB\-1\fR +This option indicates that listings should use a single column. +This is the same as \fB\-n 1\fR. +.TP +\fB\-w \fIwidth\fB\fR +This option specifies the width in characters that should be +used in figuring out how many columns to print. +The default is 79. +.TP +\fB\-n \fIcolumns\fB\fR +This option specifies the number of columns to use in +displaying the output. By default, it will attempt to +fit as many columns of font names into the number of +character specified by \fB\-w\fR width. +.TP +\fB\-u\fR This option indicates that the output should be left unsorted. -.TP 8 -.B \-o -This option indicates that \fIxlsfonts\fP should do an \fBOpenFont\fP (and -\fBQueryFont\fP, if appropriate) rather than a \fBListFonts\fP. This is -useful if \fBListFonts\fP or \fBListFontsWithInfo\fP fail to list a known -font (as is the case with some scaled font systems). -.TP 8 -.B \-fn \fIpattern\fP +.TP +\fB\-o\fR +This option indicates that xlsfonts should do an OpenFont +(and QueryFont, if appropriate) rather than a ListFonts. +This is useful if ListFonts or ListFontsWithInfo fail to +list a known font (as is the case with some scaled font +systems). +.TP +\fB\-b\fR +List printer builtin fonts. +This is the same as \fB\-x xp\-list\-internal\-printer\-fonts\fR. + +(printer mode only) +.TP +\fB\-B\fR +Do not list printer builtin fonts. +This is the same as \fB\-X xp\-list\-internal\-printer\-fonts\fR. + +(printer mode only) +.TP +\fB\-g\fR +List glyph fonts. +This is the same as \fB\-x xp\-list\-glyph\-fonts\fR. + +(printer mode only) +.TP +\fB\-G\fR +Do not list glyph fonts. +This is the same as \fB\-X xp\-list\-glyph\-fonts\fR. + +(printer mode only) +.TP +\fB\-x \fImode\fB\fR +Enable listfont mode \fImode\fR. + +Supported modes are: +.RS +.TP +xp-listinternal-printer-fonts +If \fBxp\-listinternal\-printer\-fonts\fR was set +(via option \fB\-b\fR or +\fB\-x xp\-listinternal\-printer\-fonts\fR xlsfonts +will include all of the fonts defined as internal printer fonts. +.TP +xp-list-glyph-fonts +If \fBxp\-list\-glyph\-fonts\fR was set (via option \fB\-g\fR or +\fB\-x xp\-list\-glyph\-fonts\fR) xlsfonts will +include all of the fonts available to the server which have +glyphs associated with them. +.RE + + +The default value is implicitly determined by the ddx driver to be the +all of the listfonts modes specified in the \fBxp\-listfonts\-modes\-supported\fR +printer attribute. + + +The value of \fBxp\-listfonts\-modes\-supported\fR and +\fBxp\-listfonts\-modes\fR (the defaults) can be looked-up via +\fBxplsprinters\fR(__appmansuffix__). + + +(printer mode only) +.TP +\fB\-X \fImode\fB\fR +Disable listfont mode \fImode\fR. +See option \fB\-x\fR for a list of valid +\fImode\fR values. + +(printer mode only) +.TP +\fB\-fn \fIpattern\fB\fR This option specifies the font name pattern to match. -.PP .SH "SEE ALSO" -X(__miscmansuffix__), Xserver(1), xset(1), xfd(1), -.I "X Logical Font Description Conventions" +\fBX\fR(__miscmansuffix__), \fBXprint\fR(__miscmansuffix__), \fBXserver\fR(__appmansuffix__), \fBxset\fR(__appmansuffix__), \fBxfd\fR(__appmansuffix__), \fBxplsprinters\fR(__appmansuffix__), X Logical Font Description Conventions .SH ENVIRONMENT -.TP 8 -.B DISPLAY -to get the default host and display to use. +.TP +\fBDISPLAY\fR +\fBDISPLAY\fR must be set to get the default host and display to use. +.TP +\fBXPSERVERLIST\fR +\fBXPSERVERLIST\fR must be set for the \fB\-printer\fR option +identifying the available Xprint servers. +See \fBXprint\fR(__miscmansuffix__) +for more details. .SH BUGS -Doing ``xlsfonts -l'' can tie up your server for a very long time. -This is really a bug with single-threaded non-preemptable servers, not with -this program. +Doing ``xlsfonts -l'' can tie up your server for a very long time. +This is really a bug with single-threaded +non-preemptable servers, not with this program. .SH AUTHOR -Mark Lillibridge, MIT Project Athena; Jim Fulton, MIT X Consortium; -Phil Karlton, SGI + +Mark Lillibridge +.PP +Jim Fulton +.PP +Phil Karlton +.PP +Roland Mainz + diff -N -x '*CVS*' -r -u x11r680/xc/programs/xlsfonts/xlsfonts.sgml x11r682/xc/programs/xlsfonts/xlsfonts.sgml --- xc/programs/xlsfonts/xlsfonts.sgml 1970-01-01 01:00:00.000000000 +0100 +++ xc/programs/xlsfonts/xlsfonts.sgml 2004-12-15 08:17:48.000000000 +0100 @@ -0,0 +1,473 @@ +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.2//EN" 'http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd'> + +<!-- Process this file with DocBook tools to generate the output format +(such as manual pages or HTML documents). + +Note that strings like __appmansuffix__, __filemansuffix__, __libmansuffix__, +__miscmansuffix__ etc. have to be replaced first (in theory that's the +job of ENTITIES but some XML tools are highly allergic to such stuff... ;-(). +A quick way to do that is to filter this document via +/usr/bin/sed "s/__appmansuffix__/${MANSUFFIX}/g;s/__filemansuffix__/${FILEMANSUFFIX}/g;s/__libmansuffix__/${LIBMANSUFFIX}/g;s/__miscmansuffix__/${MISCMANSUFFIX}/g" +assuming that env vars like MANSUFFIX etc. have been set to the matching +manual volume numbers. + --> + +<refentry> + <refmeta> + <refentrytitle>xlsfonts</refentrytitle> + <manvolnum>__appmansuffix__</manvolnum> + </refmeta> + + <refnamediv> + <refname>xlsfonts</refname> + <refpurpose>server font list displayer for X</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <!-- video mode --> + <cmdsynopsis> + <command>xlsfonts</command> + + <arg><option>-display <replaceable>host:dpy</replaceable></option></arg> + + <arg><option>-l</option></arg> + + <arg><option>-ll</option></arg> + + <arg><option>-lll</option></arg> + + <arg><option>-m</option></arg> + + <arg><option>-C</option></arg> + + <arg><option>-1</option></arg> + + <arg><option>-w <replaceable>width</replaceable></option></arg> + + <arg><option>-n <replaceable>columns</replaceable></option></arg> + + <arg><option>-u</option></arg> + + <arg><option>-o</option></arg> + + <arg><option>-fn <replaceable>pattern</replaceable></option></arg> + </cmdsynopsis> + + <!-- printer mode --> + <cmdsynopsis> + <command>xlsfonts</command> + + <arg choice="plain"><option>-printer <replaceable>printername</replaceable></option></arg> + + <arg><option>-l</option></arg> + + <arg><option>-ll</option></arg> + + <arg><option>-lll</option></arg> + + <arg><option>-m</option></arg> + + <arg><option>-C</option></arg> + + <arg><option>-1</option></arg> + + <arg><option>-w <replaceable>width</replaceable></option></arg> + + <arg><option>-n <replaceable>columns</replaceable></option></arg> + + <arg><option>-u</option></arg> + + <arg><option>-o</option></arg> + + <arg><option>-b</option></arg> + + <arg><option>-B</option></arg> + + <arg><option>-g</option></arg> + + <arg><option>-G</option></arg> + + <arg><option>-x <replaceable>mode</replaceable></option></arg> + + <arg><option>-X <replaceable>mode</replaceable></option></arg> + + <arg><option>-fn <replaceable>pattern</replaceable></option></arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>DESCRIPTION + + + xlsfonts lists the fonts that match the given pattern. + The wildcard character "*" may be used to match any sequence of characters + (including none), and "?" to match any single character. + If no pattern is given, "*" is assumed. + + + The "*" and "?" characters must be quoted to prevent them from being expanded by the shell. + + + + + OPTIONS + + + + + + + + This option specifies the X server to contact. + + + + + + + + + + This option specifies the Xprint printer to contact. + + + + + + + + + + Same as . + + + + + + + + + + Same as . + + + + + + + + + + Lists some attributes of the font on one line in addition + to its name. + + + + + + + + + + Lists font properties in addition to output. + + + + + + + + + + Lists character metrics in addition to output. + + + + + + + + + + This option indicates that long listings should also print + the minimum and maximum bounds of each font. + + + + + + + + + + This option indicates that listings should use multiple columns. + This is the same as . + + + + + + + + + + This option indicates that listings should use a single column. + This is the same as . + + + + + + + + + + This option specifies the width in characters that should be + used in figuring out how many columns to print. + The default is 79. + + + + + + + + + + This option specifies the number of columns to use in + displaying the output. By default, it will attempt to + fit as many columns of font names into the number of + character specified by width. + + + + + + + + + + This option indicates that the output should be left unsorted. + + + + + + + + + + This option indicates that xlsfonts should do an OpenFont + (and QueryFont, if appropriate) rather than a ListFonts. + This is useful if ListFonts or ListFontsWithInfo fail to + list a known font (as is the case with some scaled font + systems). + + + + + + + + + + List printer builtin fonts. + This is the same as . + + + (printer mode only) + + + + + + + + + + Do not list printer builtin fonts. + This is the same as . + + + (printer mode only) + + + + + + + + + + List glyph fonts. + This is the same as . + + + (printer mode only) + + + + + + + + + + Do not list glyph fonts. + This is the same as . + + + (printer mode only) + + + + + + + + + + Enable listfont mode mode. + + + Supported modes are: + + + xp-listinternal-printer-fonts + + + If xp-listinternal-printer-fonts was set + (via option or + xlsfonts + will include all of the fonts defined as internal printer fonts. + + + + + + xp-list-glyph-fonts + + + If xp-list-glyph-fonts was set (via option or + ) xlsfonts will + include all of the fonts available to the server which have + glyphs associated with them. + + + + + + + The default value is implicitly determined by the ddx driver to be the + all of the listfonts modes specified in the xp-listfonts-modes-supported + printer attribute. + + + + The value of xp-listfonts-modes-supported and + xp-listfonts-modes (the defaults) can be looked-up via + xplsprinters__appmansuffix__. + + + + + (printer mode only) + + + + + + + + + + Disable listfont mode mode. + See option for a list of valid + mode values. + + + (printer mode only) + + + + + + + + + + This option specifies the font name pattern to match. + + + + + + + + SEE ALSO + + + X__miscmansuffix__ + Xprint__miscmansuffix__ + Xserver__appmansuffix__ + xset__appmansuffix__ + xfd__appmansuffix__ + xplsprinters__appmansuffix__ + X Logical Font Description Conventions + + + + + + ENVIRONMENT + + + + DISPLAY + + + DISPLAY must be set to get the default host and display to use. + + + + + + XPSERVERLIST + + + XPSERVERLIST must be set for the option + identifying the available Xprint servers. + See Xprint__miscmansuffix__ + for more details. + + + + + + + + BUGS + + + Doing ``xlsfonts -l'' can tie up your server for a very long time. + This is really a bug with single-threaded + non-preemptable servers, not with this program. + + + + + AUTHOR + + + + Mark Lillibridge MIT Project Athena + Jim Fulton MIT X Consortium + Phil Karlton SGI + Roland Mainz University Giessen + + + + + + + diff -N -x '*CVS*' -r -u x11r680/xc/programs/xman/print.c x11r682/xc/programs/xman/print.c --- xc/programs/xman/print.c 2004-06-08 04:44:35.000000000 +0200 +++ xc/programs/xman/print.c 2004-12-13 08:15:56.000000000 +0100 @@ -294,6 +294,10 @@ apd->jobtitle = jobtitle; n = 0; + /* Override any geometry resource settings as XawPrintShell adjusts it's size + * to the current page siue when |XawPrintLAYOUTMODE_DRAWABLEAREA| or + * |XawPrintLAYOUTMODE_PAGESIZE| are used. */ + XtSetArg(args[n], XtNgeometry, "+0+0"); n++; XtSetArg(args[n], XawNlayoutMode, XawPrintLAYOUTMODE_DRAWABLEAREA); n++; apd->printshell = CreatePrintShell(toplevel, apd->pscreen, "printshell", args, n); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xman/search.c x11r682/xc/programs/xman/search.c --- xc/programs/xman/search.c 2004-09-02 10:40:33.000000000 +0200 +++ xc/programs/xman/search.c 2004-12-13 08:11:51.000000000 +0100 @@ -169,6 +169,10 @@ return(NULL); } + if (strlen(search_string) >= BUFSIZ) { + PopupWarning(man_globals, "Search string too long."); + return(NULL); + } if (search_string[0] == ' ') { PopupWarning(man_globals, "First character cannot be a space."); return(NULL); @@ -205,16 +209,17 @@ strcpy(path,manpath); } - sprintf(label,"Results of apropos search on: %s", search_string); + snprintf(label, sizeof(label), + "Results of apropos search on: %s", search_string); #ifdef NO_MANPATH_SUPPORT /* not quite correct, but the best I can do. */ - sprintf(cmdbuf, APROPOS_FORMAT, search_string, mantmp); + snprintf(cmdbuf, sizeof(cmdbuf), APROPOS_FORMAT, search_string, mantmp); #else - sprintf(cmdbuf, APROPOS_FORMAT, path, search_string, mantmp); + snprintf(cmdbuf, sizeof(cmdbuf), APROPOS_FORMAT, path, search_string, mantmp); #endif if(system(cmdbuf) != 0) { /* execute search. */ - sprintf(error_buf,"Something went wrong trying to run %s\n",cmdbuf); + snprintf(error_buf, sizeof(error_buf), "Something went wrong trying to run %s\n",cmdbuf); PopupWarning(man_globals, error_buf); } @@ -232,7 +237,7 @@ unlink(mantmp); - sprintf(string_buf,"%s: nothing appropriate", search_string); + snprintf(string_buf, sizeof(string_buf), "%s: nothing appropriate", search_string); /* * Check first LOOKLINES lines for "nothing appropriate". @@ -263,14 +268,15 @@ return(NULL); } - strcpy(man_globals->manpage_title,label); + snprintf(man_globals->manpage_title, sizeof(man_globals->manpage_title), + "%s", label); ChangeLabel(man_globals->label,label); fseek(file, 0L, SEEK_SET); /* reset file to point at top. */ } else { /* MANUAL SEACH */ file = DoManualSearch(man_globals, search_string); if (file == NULL) { - sprintf(string_buf,"No manual entry for %s.", search_string); + snprintf(string_buf, sizeof(string_buf), "No manual entry for %s.", search_string); ChangeLabel(man_globals->label, string_buf); if (man_globals->label == NULL) PopupWarning(man_globals, string_buf); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmodmap/pf.c x11r682/xc/programs/xmodmap/pf.c --- xc/programs/xmodmap/pf.c 2003-11-14 17:49:23.000000000 +0100 +++ xc/programs/xmodmap/pf.c 2004-12-08 07:16:20.000000000 +0100 @@ -87,8 +87,12 @@ int i; char *cp; - len = strlen (buffer); - + /* copy buffer since it may point to unwritable date */ + len = strlen(buffer); + cp = chk_malloc(len + 1); + strcpy(cp, buffer); + buffer = cp; + for (i = 0; i < len; i++) { /* look for blank lines */ register char c = buffer[i]; if (!(isspace(c) || c == '\n')) break; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmodmap/xmodmap.c x11r682/xc/programs/xmodmap/xmodmap.c --- xc/programs/xmodmap/xmodmap.c 2004-04-23 21:54:59.000000000 +0200 +++ xc/programs/xmodmap/xmodmap.c 2004-12-08 07:16:20.000000000 +0100 @@ -51,6 +51,16 @@ exit (status); } +void * +chk_malloc(size_t n_bytes) +{ + void *buf = malloc(n_bytes); + if (!buf) { + fprintf(stderr, "%s: Could not allocate %d bytes\n", ProgramName, (int)n_bytes); + Exit(-1); + } + return buf; +} static char *help_message[] = { "\nwhere options include:", @@ -244,9 +254,10 @@ case 's': case 'l': case 'c': { - char cmd[80]; /* big enough to hold line */ + char *cmd; didAnything = True; if (++i >= argc) usage (); + cmd = chk_malloc (strlen ("remove control = ") + strlen (argv[i]) + 1); (void) sprintf (cmd, "remove %s = %s", ((arg[1] == 's') ? "shift" : ((arg[1] == 'l') ? "lock" : @@ -265,10 +276,10 @@ case '3': case '4': case '5': { - char cmd[80]; /* big enough to hold line */ + char *cmd; didAnything = True; if (++i >= argc) usage (); - + cmd = chk_malloc (strlen ("add modX = ") + strlen (argv[i]) + 1); (void) sprintf (cmd, "add mod%c = %s", arg[1], argv[i]); process_line (cmd); continue; @@ -281,9 +292,10 @@ case 's': case 'l': case 'c': { - char cmd[80]; /* big enough to hold line */ + char *cmd; didAnything = True; if (++i >= argc) usage (); + cmd = chk_malloc (strlen ("add control = ") + strlen (argv[i]) + 1); (void) sprintf (cmd, "add %s = %s", ((arg[1] == 's') ? "shift" : ((arg[1] == 'l') ? "lock" : diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmodmap/xmodmap.h x11r682/xc/programs/xmodmap/xmodmap.h --- xc/programs/xmodmap/xmodmap.h 2004-04-23 21:54:59.000000000 +0200 +++ xc/programs/xmodmap/xmodmap.h 2004-12-08 07:16:20.000000000 +0100 @@ -56,3 +56,5 @@ extern void PrintKeyTable(Bool exprs, FILE *fp); extern void PrintPointerMap(FILE *fp); extern int SetPointerMap(unsigned char *map, int n); + +extern void *chk_malloc(size_t n_bytes); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmore/print.c x11r682/xc/programs/xmore/print.c --- xc/programs/xmore/print.c 2004-06-08 04:44:35.000000000 +0200 +++ xc/programs/xmore/print.c 2004-12-13 08:15:56.000000000 +0100 @@ -305,6 +305,10 @@ apd->jobtitle = jobtitle; n = 0; + /* Override any geometry resource settings as XawPrintShell adjusts it's size + * to the current page siue when |XawPrintLAYOUTMODE_DRAWABLEAREA| or + * |XawPrintLAYOUTMODE_PAGESIZE| are used. */ + XtSetArg(args[n], XtNgeometry, "+0+0"); n++; XtSetArg(args[n], XawNlayoutMode, XawPrintLAYOUTMODE_DRAWABLEAREA); n++; apd->printshell = CreatePrintShell(toplevel, apd->pscreen, "printshell", args, n); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmore/xmore.man x11r682/xc/programs/xmore/xmore.man --- xc/programs/xmore/xmore.man 2004-05-24 05:17:44.000000000 +0200 +++ xc/programs/xmore/xmore.man 2005-02-02 00:09:30.000000000 +0100 @@ -1,25 +1,23 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XMORE" "__mansuffix__" "24 May 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xmore __appmansuffix__ "1 February 2005" .SH NAME xmore \- plain text display program for the X Window System .SH SYNOPSIS - -\fBxmore\fR [ \fB\fIfilename\fB\fR] - -.SH "DESCRIPTION" -.PP -\fBxmore\fR is a plain text browser. -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.ad l +\fBxmore\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\fBfilename\fR\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xmore is a plain text browser. +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. .SH "SEE ALSO" -.PP -\fBX11\fR(__miscmansuffix__), \fBxman\fR(__mansuffix__) +\fBX11\fR(__miscmansuffix__), \fBxman\fR(__appmansuffix__) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xmore/xmore.sgml x11r682/xc/programs/xmore/xmore.sgml --- xc/programs/xmore/xmore.sgml 2004-05-24 05:17:44.000000000 +0200 +++ xc/programs/xmore/xmore.sgml 2005-02-02 00:09:30.000000000 +0100 @@ -1,13 +1,14 @@ - + @@ -15,7 +16,7 @@ xmore - __mansuffix__ + __appmansuffix__ xmore @@ -72,7 +73,7 @@ X11__miscmansuffix__ - xman__mansuffix__ + xman__appmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c x11r682/xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c --- xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c 2004-12-13 08:15:56.000000000 +0100 @@ -302,6 +302,10 @@ if( doPrint ) { n = 0; + /* Override any geometry resource settings as XawPrintShell adjusts it's size + * to the current page siue when |XawPrintLAYOUTMODE_DRAWABLEAREA| or + * |XawPrintLAYOUTMODE_PAGESIZE| are used. */ + XtSetArg(args[n], XtNgeometry, "+0+0"); n++; XtSetArg(args[n], XawNlayoutMode, XawPrintLAYOUTMODE_DRAWABLEAREA); n++; print_shell = XtCreatePopupShell("myprintshell", xawPrintShellWidgetClass, diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xphelloworld/xphelloworld.html x11r682/xc/programs/xphelloworld/xphelloworld/xphelloworld.html --- xc/programs/xphelloworld/xphelloworld/xphelloworld.html 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xphelloworld/xphelloworld.html 2004-12-15 08:17:48.000000000 +0100 @@ -1,9 +1,9 @@ -xphelloworld

      Name

      xphelloworld — sends a test page to an Xprint printer

      Synopsis

      xphelloworld [-printer printernname] [-printargs - arg=value [,...]] [-v] [-text text] [-h]

      DESCRIPTION

      xphelloworld is a utility for Xprint, the +xphelloworld

      Name

      xphelloworld — sends a test page to an Xprint printer

      Synopsis

      xphelloworld [-printer printernname] [-printargs + arg=value [,...]] [-v] [-text text] [-h]

      DESCRIPTION

      xphelloworld is a utility for Xprint, the printing system for the X Window system. It sends a test page to the specified printer (or the default printer, if none is specified). -

      OPTIONS

      -printer printernname

      printer to use

      -printargs arg=value [,...]

      Args: -

      tofile=filename

      papersize=paper name

      orientation=orientation

      resolution=DPI

      plex=plex

      title=string

      -text text

      Sample text to print. Default is "hello world from X11 print system".

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, +

      OPTIONS

      -printer printernname

      printer to use

      -printargs arg=value [,...]

      Args: +

      tofile=filename

      papersize=paper name

      orientation=orientation

      resolution=DPI

      plex=plex

      title=string

      -text text

      Sample text to print. Default is "hello world from X11 print system".

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, identifying the available Xprint servers. See Xprint(7) for more details. diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xphelloworld/xphelloworld.man x11r682/xc/programs/xphelloworld/xphelloworld/xphelloworld.man --- xc/programs/xphelloworld/xphelloworld/xphelloworld.man 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xphelloworld/xphelloworld.man 2004-12-15 08:17:48.000000000 +0100 @@ -1,64 +1,63 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPHELLOWORLD" "__mansuffix__" "13 February 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xphelloworld __appmansuffix__ "8 October 2004" .SH NAME xphelloworld \- sends a test page to an Xprint printer .SH SYNOPSIS - -\fBxphelloworld\fR [ \fB-printer \fIprinternname\fB\fR] [ \fB-printargs -\fIarg\fB=\fIvalue\fB [,...]\fR] [ \fB-v\fR] [ \fB-text \fItext\fB\fR] [ \fB-h\fR] - -.SH "DESCRIPTION" -.PP -\fBxphelloworld\fR is a utility for Xprint, the +.ad l +\fBxphelloworld\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-printer \fBprinternname\fR\fR] [\fB\-printargs +\fBarg\fR= \fBvalue\fR [,...]\fR] [\fB\-v\fR] [\fB\-text \fBtext\fR\fR] [\fB\-h\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xphelloworld is a utility for Xprint, the printing system for the X Window system. It sends a test page to the specified printer (or the default printer, if none is specified). -.SH "OPTIONS" -.TP -\fB-printer \fIprinternname\fB \fR +.SH OPTIONS +.TP +\fB\-printer \fIprinternname\fB\fR printer to use -.TP -\fB-printargs \fIarg\fB=\fIvalue\fB [,...] \fR +.TP +\fB\-printargs \fIarg\fB=\fIvalue\fB [,...]\fR Args: -.RS -.TP +.RS +.TP \fBtofile=\fIfilename\fB\fR -.TP +.TP \fBpapersize=\fIpaper name\fB\fR -.TP +.TP \fBorientation=\fIorientation\fB\fR -.TP +.TP \fBresolution=\fIDPI\fB\fR -.TP +.TP \fBplex=\fIplex\fB\fR -.TP +.TP \fBtitle=\fIstring\fB\fR .RE -.TP -\fB-text \fItext\fB \fR + +.TP +\fB\-text \fItext\fB\fR Sample text to print. Default is "hello world from X11 print system". -.TP -\fB-v \fR +.TP +\fB\-v\fR verbose output -.TP -\fB-h \fR +.TP +\fB\-h\fR print usage -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. .SH "KNOWN BUGS" -.PP -The \fB-text\fR option assumes that the text is in ISO8859-1 encoding +The \fB\-text\fR option assumes that the text is in ISO8859-1 encoding (the \fB${LANG}\fR environment variable is not honored in this case). -A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html ). + +A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). .SH "SEE ALSO" -.PP -\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xphelloworld/xphelloworld.sgml x11r682/xc/programs/xphelloworld/xphelloworld/xphelloworld.sgml --- xc/programs/xphelloworld/xphelloworld/xphelloworld.sgml 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xphelloworld/xphelloworld.sgml 2004-12-15 08:17:48.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xphelloworld - __mansuffix__ + __appmansuffix__ xphelloworld @@ -159,16 +159,16 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xplsprinters__mansuffix__ + xplsprinters__appmansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.html x11r682/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.html --- xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.html 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.html 2004-12-15 08:17:49.000000000 +0100 @@ -1,4 +1,4 @@ -xpsimplehelloworld

      Name

      xpsimplehelloworld — "Hello World"-like Xprint sample utility based on plain X11 rendering calls

      Synopsis

      xpsimplehelloworld [-printer printernname] [-v] [-h]

      DESCRIPTION

      xpsimplehelloworld is a sample utility for Xprint, the +xpsimplehelloworld

      Name

      xpsimplehelloworld — "Hello World"-like Xprint sample utility based on plain X11 rendering calls

      Synopsis

      xpsimplehelloworld [-printer printernname] [-v] [-h]

      DESCRIPTION

      xpsimplehelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) using plain X11 rendering instructions and without using special toolkit support (like one of @@ -7,10 +7,10 @@ XmPrintShell(3x) or XawPrintShell(3x))). -

      OPTIONS

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, +

      OPTIONS

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, identifying the available Xprint servers. See Xprint(7) for more details. -

      KNOWN BUGS

      +

      KNOWN BUGS

      A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). -

      SEE ALSO

      Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      +

      SEE ALSO

      Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.man x11r682/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.man --- xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.man 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.man 2004-12-15 08:17:49.000000000 +0100 @@ -1,18 +1,17 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPSIMPLEHELLOWORLD" "__mansuffix__" "13 February 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xpsimplehelloworld __appmansuffix__ "8 October 2004" .SH NAME -xpsimplehelloworld \- \&"Hello World\&"-like Xprint sample utility based on plain X11 rendering calls +xpsimplehelloworld \- "Hello World"-like Xprint sample utility based on plain X11 rendering calls .SH SYNOPSIS - -\fBxpsimplehelloworld\fR [ \fB-printer \fIprinternname\fB\fR] [ \fB-v\fR] [ \fB-h\fR] - -.SH "DESCRIPTION" -.PP -\fBxpsimplehelloworld\fR is a sample utility for Xprint, the +.ad l +\fBxpsimplehelloworld\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-printer \fBprinternname\fR\fR] [\fB\-v\fR] [\fB\-h\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xpsimplehelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) using plain X11 rendering instructions and without using special toolkit support (like one of @@ -21,26 +20,24 @@ \fBXmPrintShell\fR(__libmansuffix__) or \fBXawPrintShell\fR(__libmansuffix__))). -.SH "OPTIONS" -.TP -\fB-printer \fIprinternname\fB \fR +.SH OPTIONS +.TP +\fB\-printer \fIprinternname\fB\fR printer to use -.TP -\fB-v \fR +.TP +\fB\-v\fR verbose output -.TP -\fB-h \fR +.TP +\fB\-h\fR print usage -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. .SH "KNOWN BUGS" -.PP -A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html ). +A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). .SH "SEE ALSO" -.PP -\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.sgml x11r682/xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.sgml --- xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.sgml 2004-04-23 21:55:00.000000000 +0200 +++ xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.sgml 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xpsimplehelloworld - __mansuffix__ + __appmansuffix__ xpsimplehelloworld @@ -113,16 +113,16 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xplsprinters__mansuffix__ - xphelloworld__mansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ + xplsprinters__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.html x11r682/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.html --- xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.html 2004-04-23 21:55:02.000000000 +0200 +++ xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.html 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ -xpxmhelloworld

      Name

      xpxmhelloworld — "Hello World"-like Xprint sample utility based on the Motif2 toolkit

      Synopsis

      xpxmhelloworld [-print] [-printer printernname] [-v] [-h] string...

      DESCRIPTION

      xpxmhelloworld is a sample utility for Xprint, the +xpxmhelloworld

      Name

      xpxmhelloworld — "Hello World"-like Xprint sample utility based on the Motif2 toolkit

      Synopsis

      xpxmhelloworld [-print] [-printer printernname] [-v] [-h] string...

      DESCRIPTION

      xpxmhelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) based on the Motif2 toolkit using the XmPrintShell(3x) widget class. -

      OPTIONS

      -print

      Print (default is to display on the video Xserver)

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, +

      OPTIONS

      -print

      Print (default is to display on the video Xserver)

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, identifying the available Xprint servers. See Xprint(7) for more details.

      KNOWN BUGS

      A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). -

      SEE ALSO

      http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmPrintShell.htm, http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmText.htm, Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      +

      SEE ALSO

      http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmPrintShell.htm, http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmText.htm, Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.man x11r682/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.man --- xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.man 2004-04-23 21:55:02.000000000 +0200 +++ xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.man 2004-12-15 08:17:49.000000000 +0100 @@ -1,46 +1,43 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPXMHELLOWORLD" "__mansuffix__" "13 February 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xpxmhelloworld __appmansuffix__ "8 October 2004" .SH NAME -xpxmhelloworld \- \&"Hello World\&"-like Xprint sample utility based on the Motif2 toolkit +xpxmhelloworld \- "Hello World"-like Xprint sample utility based on the Motif2 toolkit .SH SYNOPSIS - -\fBxpxmhelloworld\fR [ \fB-print\fR] [ \fB-printer \fIprinternname\fB\fR] [ \fB-v\fR] [ \fB-h\fR] \fB\fIstring\fB\fR\fI ...\fR - -.SH "DESCRIPTION" -.PP -\fBxpxmhelloworld\fR is a sample utility for Xprint, the +.ad l +\fBxpxmhelloworld\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-print\fR] [\fB\-printer \fBprinternname\fR\fR] [\fB\-v\fR] [\fB\-h\fR] \fBstring\fR \&... +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xpxmhelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) based on the Motif2 toolkit using the \fBXmPrintShell\fR(__libmansuffix__) widget class. -.SH "OPTIONS" -.TP -\fB-print \fR +.SH OPTIONS +.TP +\fB\-print\fR Print (default is to display on the video Xserver) -.TP -\fB-printer \fIprinternname\fB \fR +.TP +\fB\-printer \fIprinternname\fB\fR printer to use -.TP -\fB-v \fR +.TP +\fB\-v\fR verbose output -.TP -\fB-h \fR +.TP +\fB\-h\fR print usage -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. .SH "KNOWN BUGS" -.PP -A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html ). +A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). .SH "SEE ALSO" -.PP -http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmPrintShell.htm , http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmText.htm , \fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmPrintShell.htm, http://nscp.upenn.edu/aix4.3html/libs/motiftr/XmText.htm, \fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.sgml x11r682/xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.sgml --- xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.sgml 2004-04-23 21:55:02.000000000 +0200 +++ xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.sgml 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xpxmhelloworld - __mansuffix__ + __appmansuffix__ xpxmhelloworld @@ -121,16 +121,16 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xplsprinters__mansuffix__ - xphelloworld__mansuffix__ + xplsprinters__appmansuffix__ + xphelloworld__appmansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.html x11r682/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.html --- xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.html 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.html 2004-12-15 08:17:49.000000000 +0100 @@ -1,4 +1,4 @@ -xpxthelloworld

      Name

      xpxthelloworld — "Hello World"-like Xprint sample utility based on the Xt toolkit

      Synopsis

      xpxthelloworld [-print] [-printer printernname] [-v] [-h]

      DESCRIPTION

      xpxthelloworld is a sample utility for Xprint, the +xpxthelloworld

      Name

      xpxthelloworld — "Hello World"-like Xprint sample utility based on the Xt toolkit

      Synopsis

      xpxthelloworld [-print] [-printer printernname] [-v] [-h]

      DESCRIPTION

      xpxthelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) based on the Xt toolkit without using one of the special print shell widget classes @@ -6,10 +6,10 @@ XmPrintShell(3x) or XawPrintShell(3x)). -

      OPTIONS

      -print

      Print (default is to display on the video Xserver)

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, +

      OPTIONS

      -print

      Print (default is to display on the video Xserver)

      -printer printernname

      printer to use

      -v

      verbose output

      -h

      print usage

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, identifying the available Xprint servers. See Xprint(7) for more details. -

      KNOWN BUGS

      +

      KNOWN BUGS

      A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). -

      SEE ALSO

      Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      +

      SEE ALSO

      Xprint(7), X11(7), xplsprinters(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.man x11r682/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.man --- xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.man 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.man 2004-12-15 08:17:49.000000000 +0100 @@ -1,18 +1,17 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPXTHELLOWORLD" "__mansuffix__" "13 February 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xpxthelloworld __appmansuffix__ "8 October 2004" .SH NAME -xpxthelloworld \- \&"Hello World\&"-like Xprint sample utility based on the Xt toolkit +xpxthelloworld \- "Hello World"-like Xprint sample utility based on the Xt toolkit .SH SYNOPSIS - -\fBxpxthelloworld\fR [ \fB-print\fR] [ \fB-printer \fIprinternname\fB\fR] [ \fB-v\fR] [ \fB-h\fR] - -.SH "DESCRIPTION" -.PP -\fBxpxthelloworld\fR is a sample utility for Xprint, the +.ad l +\fBxpxthelloworld\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-print\fR] [\fB\-printer \fBprinternname\fR\fR] [\fB\-v\fR] [\fB\-h\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xpxthelloworld is a sample utility for Xprint, the printing system for the X Window system. It demonstrates how to send a test page to the specified printer (or the default printer, if none is specified) based on the Xt toolkit without using one of the special print shell widget classes @@ -20,29 +19,27 @@ \fBXmPrintShell\fR(__libmansuffix__) or \fBXawPrintShell\fR(__libmansuffix__)). -.SH "OPTIONS" -.TP -\fB-print \fR +.SH OPTIONS +.TP +\fB\-print\fR Print (default is to display on the video Xserver) -.TP -\fB-printer \fIprinternname\fB \fR +.TP +\fB\-printer \fIprinternname\fB\fR printer to use -.TP -\fB-v \fR +.TP +\fB\-v\fR verbose output -.TP -\fB-h \fR +.TP +\fB\-h\fR print usage -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. .SH "KNOWN BUGS" -.PP -A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html ). +A full list of bugs can be obtained from the Xprint.org bug database (http://xprint.mozdev.org/xprint_bugs.html). .SH "SEE ALSO" -.PP -\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.sgml x11r682/xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.sgml --- xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.sgml 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xphelloworld/xpxthelloworld/xpxthelloworld.sgml 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xpxthelloworld - __mansuffix__ + __appmansuffix__ xpxthelloworld @@ -121,16 +121,16 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xplsprinters__mansuffix__ - xphelloworld__mansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ + xplsprinters__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xplsprinters/xplsprinters.html x11r682/xc/programs/xplsprinters/xplsprinters.html --- xc/programs/xplsprinters/xplsprinters.html 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/xplsprinters/xplsprinters.html 2004-12-15 08:17:49.000000000 +0100 @@ -1,8 +1,8 @@ -xplsprinters

      Name

      xplsprinters — shows a list of Xprint printers and it's attributes

      Synopsis

      xplsprinters [-printer printername] [-d] [-l] [-dump] [-h]

      DESCRIPTION

      xplsprinters is a utility for Xprint, the +xplsprinters

      Name

      xplsprinters — shows a list of Xprint printers and it's attributes

      Synopsis

      xplsprinters [-printer printername] [-d] [-l] [-dump] [-h]

      DESCRIPTION

      xplsprinters is a utility for Xprint, the printing system for the X Window system. It can deliver both a list of printers and attributes supported for a specific list of printers. -

      OPTIONS

      -printer printername

      printer to use

      -dump

      dump all available printer attributes

      -h | -?

      print usage

      -d

      print description for each printer

      -l

      list detailed printer attribute information

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, +

      OPTIONS

      -printer printername

      printer to use

      -dump

      dump all available printer attributes

      -h | -?

      print usage

      -d

      print description for each printer

      -l

      list detailed printer attribute information

      ENVIRONMENT

      XPSERVERLIST

      ${XPSERVERLIST} must be set, identifying the available Xprint servers. See Xprint(7) for more details. @@ -27,4 +27,7 @@ orientation=landscape default_plex= plex=simplex -

      SEE ALSO

      Xprint(7), X11(7), xprehashprinterlist(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      +

      NOTES

      + The list of builtin fonts supported by a printer can be obtained + using the xlsfonts command. +

      SEE ALSO

      Xprint(7), X11(7), xprehashprinterlist(1x), xphelloworld(1x), xpxmhelloworld(1x), xpawhelloworld(1x), xpxthelloworld(1x), xpsimplehelloworld(1x), xlsfonts(1x), Xserver(1x), Xprt(1x), libXp(3x), libXprintUtils(3x), libXprintAppUtils(3x), XmPrintShell(3x), XawPrintShell(3x), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/)

      diff -N -x '*CVS*' -r -u x11r680/xc/programs/xplsprinters/xplsprinters.man x11r682/xc/programs/xplsprinters/xplsprinters.man --- xc/programs/xplsprinters/xplsprinters.man 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/xplsprinters/xplsprinters.man 2004-12-15 08:17:49.000000000 +0100 @@ -1,48 +1,46 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPLSPRINTERS" "__mansuffix__" "29 June 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xplsprinters __appmansuffix__ "8 October 2004" .SH NAME xplsprinters \- shows a list of Xprint printers and it's attributes .SH SYNOPSIS - -\fBxplsprinters\fR [ \fB-printer \fIprintername\fB\fR] [ \fB-d\fR] [ \fB-l\fR] [ \fB-dump\fR] [ \fB-h\fR] - -.SH "DESCRIPTION" -.PP -\fBxplsprinters\fR is a utility for Xprint, the +.ad l +\fBxplsprinters\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-printer \fBprintername\fR\fR] [\fB\-d\fR] [\fB\-l\fR] [\fB\-dump\fR] [\fB\-h\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xplsprinters is a utility for Xprint, the printing system for the X Window system. It can deliver both a list of printers and attributes supported for a specific list of printers. -.SH "OPTIONS" -.TP -\fB-printer \fIprintername\fB \fR +.SH OPTIONS +.TP +\fB\-printer \fIprintername\fB\fR printer to use -.TP -\fB-dump \fR +.TP +\fB\-dump\fR dump all available printer attributes -.TP -\fB-h | -? \fR +.TP +\fB\-h | \-?\fR print usage -.TP -\fB-d \fR +.TP +\fB\-d\fR print description for each printer -.TP -\fB-l \fR +.TP +\fB\-l\fR list detailed printer attribute information -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. -.SH "EXAMPLES" -.SS "LIST ALL AVAILABLE \&"X PRINT SPECIFIERS\&" (PRINTER NAMES)" +.SH EXAMPLES +\fBList all available "X Print Specifiers" (printer names)\fR .PP - .nf % \fBxplsprinters\fR .fi @@ -56,24 +54,26 @@ printer: xp_ps_spooldir_tmp_Xprintjobs@meridian:19 printer: xp_pdf_spooldir_tmp_Xprintjobs@meridian:19 .fi -.SS "GET INFORMATION ABOUT THE SUPPORTED ATTRIBUTES OF PRINTER \&"PS002\&":" -.PP +.PP +\fBGet information about the supported attributes of printer "ps002":\fR +.PP .nf -% \fBxplsprinters -printer ps002 -l\fR +% \fBxplsprinters \-printer ps002 \-l\fR .fi .PP would print: .nf + printer: ps002@castor:18 description= - model-identifier=HPDJ1600C - default-medium=iso-a4 - default-input-tray= - medium-source-sizes-supported=iso-a4 false 6.35 203.65 6.35 290.65 - medium-source-sizes-supported=na-letter false 6.35 209.55 6.35 273.05 - default-printer-resolution=300 + model\-identifier=HPDJ1600C + default\-medium=iso\-a4 + default\-input\-tray= + medium\-source\-sizes\-supported=iso\-a4 false 6.35 203.65 6.35 290.65 + medium\-source\-sizes\-supported=na\-letter false 6.35 209.55 6.35 273.05 + default\-printer\-resolution=300 resolution=300 default_orientation= orientation=portrait @@ -81,6 +81,9 @@ default_plex= plex=simplex .fi + +.SH NOTES +The list of builtin fonts supported by a printer can be obtained +using the xlsfonts command. .SH "SEE ALSO" -.PP -\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxprehashprinterlist\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxprehashprinterlist\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBxlsfonts\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xplsprinters/xplsprinters.sgml x11r682/xc/programs/xplsprinters/xplsprinters.sgml --- xc/programs/xplsprinters/xplsprinters.sgml 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/xplsprinters/xplsprinters.sgml 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xplsprinters - __mansuffix__ + __appmansuffix__ @@ -151,6 +151,14 @@ + NOTES + + The list of builtin fonts supported by a printer can be obtained + using the xlsfonts command. + + + + SEE ALSO @@ -161,16 +169,17 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xprehashprinterlist__mansuffix__ - xphelloworld__mansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + xprehashprinterlist__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + xlsfonts__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xprehashprinterlist/xprehashprinterlist.man x11r682/xc/programs/xprehashprinterlist/xprehashprinterlist.man --- xc/programs/xprehashprinterlist/xprehashprinterlist.man 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/xprehashprinterlist/xprehashprinterlist.man 2004-12-15 08:17:49.000000000 +0100 @@ -1,41 +1,39 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "XPREHASHPRINTERLIST" "__mansuffix__" "29 June 2004" "" "" +.\" -*- coding: us-ascii -*- +.TH xprehashprinterlist __appmansuffix__ "8 October 2004" .SH NAME xprehashprinterlist \- Recomputes the list of available printers. .SH SYNOPSIS - -\fBxprehashprinterlist\fR [ \fB-v\fR] [ \fB-h\fR] - -.SH "DESCRIPTION" -.PP -\fBxprehashprinterlist\fR causes all Xprint servers -to recompute (update) their lists of available printers, and update the +.ad l +\fBxprehashprinterlist\fR \kx +.if (\nxu > (\n(.lu / 2)) .nr x (\n(.lu / 5) +'in \n(.iu+\nxu +[\fB\-v\fR] [\fB\-h\fR] +'in \n(.iu-\nxu +.ad b +.SH DESCRIPTION +xprehashprinterlist causes all Xprint servers +to recompute (update) their lists of available printers, and update the attributes for the printers. The intended usage of this tool is that a system administrator can run it after changing the printer topology. -.SH "OPTIONS" -.TP -\fB-v \fR +.SH OPTIONS +.TP +\fB\-v\fR generate verbose output -.TP -\fB-h | -? \fR +.TP +\fB\-h | \-?\fR print usage -.SH "ENVIRONMENT" -.TP -\fBXPSERVERLIST \fR +.SH ENVIRONMENT +.TP +\fBXPSERVERLIST\fR \fB${XPSERVERLIST}\fR must be set, identifying the available Xprint servers. See \fBXprint\fR(__miscmansuffix__) for more details. -.SH "EXAMPLES" -.SS "UPDATE THE LIST OF AVAILABLE PRINTERS" +.SH EXAMPLES +\fBUpdate the list of available printers\fR .PP - .nf -% \fBxprehashprinterlist -v\fR +% \fBxprehashprinterlist \-v\fR .fi .PP would print: @@ -43,11 +41,10 @@ .nf Rehashing printer list on server 'meridian:34' .fi -.SH "NOTES" -.PP -\fBxprehashprinterlist\fR rehashes all printer lists of all print servers. -Alternatively \fBxset rehashprinterlist\fR may be used to rehash only the + +.SH NOTES +xprehashprinterlist rehashes all printer lists of all print servers. +Alternatively xset rehashprinterlist may be used to rehash only the list of printers in one print server. .SH "SEE ALSO" -.PP -\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxset\fR(__mansuffix__), \fBxplsprinters\fR(__mansuffix__), \fBxphelloworld\fR(__mansuffix__), \fBxpxmhelloworld\fR(__mansuffix__), \fBxpawhelloworld\fR(__mansuffix__), \fBxpxthelloworld\fR(__mansuffix__), \fBxpsimplehelloworld\fR(__mansuffix__), \fBXserver\fR(__mansuffix__), \fBXprt\fR(__mansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html ), Xprint main site (http://xprint.mozdev.org/ ) +\fBXprint\fR(__miscmansuffix__), \fBX11\fR(__miscmansuffix__), \fBxset\fR(__appmansuffix__), \fBxplsprinters\fR(__appmansuffix__), \fBxphelloworld\fR(__appmansuffix__), \fBxpxmhelloworld\fR(__appmansuffix__), \fBxpawhelloworld\fR(__appmansuffix__), \fBxpxthelloworld\fR(__appmansuffix__), \fBxpsimplehelloworld\fR(__appmansuffix__), \fBXserver\fR(__appmansuffix__), \fBXprt\fR(__appmansuffix__), \fBlibXp\fR(__libmansuffix__), \fBlibXprintUtils\fR(__libmansuffix__), \fBlibXprintAppUtils\fR(__libmansuffix__), \fBXmPrintShell\fR(__libmansuffix__), \fBXawPrintShell\fR(__libmansuffix__), Xprint FAQ (http://xprint.mozdev.org/docs/Xprint_FAQ.html), Xprint main site (http://xprint.mozdev.org/) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xprehashprinterlist/xprehashprinterlist.sgml x11r682/xc/programs/xprehashprinterlist/xprehashprinterlist.sgml --- xc/programs/xprehashprinterlist/xprehashprinterlist.sgml 2004-06-29 19:10:13.000000000 +0200 +++ xc/programs/xprehashprinterlist/xprehashprinterlist.sgml 2004-12-15 08:17:49.000000000 +0100 @@ -1,13 +1,13 @@ - + @@ -15,7 +15,7 @@ xprehashprinterlist - __mansuffix__ + __appmansuffix__ @@ -116,17 +116,17 @@ Xprint__miscmansuffix__ X11__miscmansuffix__ - xset__mansuffix__ - xplsprinters__mansuffix__ - xphelloworld__mansuffix__ - xpxmhelloworld__mansuffix__ - xpawhelloworld__mansuffix__ - xpxthelloworld__mansuffix__ - xpsimplehelloworld__mansuffix__ - Xserver__mansuffix__ - Xprt__mansuffix__ + xset__appmansuffix__ + xplsprinters__appmansuffix__ + xphelloworld__appmansuffix__ + xpxmhelloworld__appmansuffix__ + xpawhelloworld__appmansuffix__ + xpxthelloworld__appmansuffix__ + xpsimplehelloworld__appmansuffix__ + Xserver__appmansuffix__ + Xprt__appmansuffix__ libXp__libmansuffix__ libXprintUtils__libmansuffix__ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/Imakefile x11r682/xc/programs/xrx/Imakefile --- xc/programs/xrx/Imakefile 2004-08-25 02:30:42.000000000 +0200 +++ xc/programs/xrx/Imakefile 2005-01-24 06:01:54.000000000 +0100 @@ -1,20 +1,10 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:54:56 cpqbld Exp $ -XCOMM $XdotOrg: xc/programs/xrx/Imakefile,v 1.3 2004/08/25 00:30:42 kem Exp $ +XCOMM $XdotOrg: xc/programs/xrx/Imakefile,v 1.3.2.1 2005/01/24 05:01:54 gisburn Exp $ - - -XCOMM $XFree86$ - -#ifdef deprecated #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" -#if BuildPlugin && !defined(VendorHasX11R6_3libXext) -LIBXPLUGINDIR = libxplugin -#endif - - SUBDIRS = $(LIBXPLUGINDIR) plugin + SUBDIRS = helper plugin xnest-plugin MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) -#endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/helper/helper.c x11r682/xc/programs/xrx/helper/helper.c --- xc/programs/xrx/helper/helper.c 2003-11-14 17:49:23.000000000 +0100 +++ xc/programs/xrx/helper/helper.c 2004-12-15 02:22:19.000000000 +0100 @@ -526,4 +526,6 @@ /* then wait for it... */ XtAppMainLoop(app_context); + + return EXIT_SUCCESS; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/plugin/Imakefile x11r682/xc/programs/xrx/plugin/Imakefile --- xc/programs/xrx/plugin/Imakefile 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xrx/plugin/Imakefile 2005-01-24 06:01:54.000000000 +0100 @@ -1,9 +1,4 @@ -XCOMM $Xorg: Imakefile,v 1.4 2001/02/20 15:51:17 pookie Exp $ - - - - -XCOMM $XFree86: xc/programs/xrx/plugin/Imakefile,v 1.12tsi Exp $ +XCOMM $Xorg: Imakefile,v 1.5 2005/09/160 00:51:17 gisburn Exp $ #if HasSharedLibraries @@ -14,7 +9,7 @@ #define LibName xrx #define SoRev SOXRXREV -SharedLibReferences(xrx,xrx,$(RXSRC),SOXRXREV,6.3) +SharedLibReferences(xrx,xrx,$(RXSRC),SOXRXREV,6.8) RXSRC = ../rx RX_INCLUDES = -I$(RXSRC) @@ -23,73 +18,7 @@ SOCKET_DEFINES = -DBSD44SOCKETS #endif -/* Netscape be damned. Allow fresh (re-)installs to proceed correctly */ -#if UseInstalledX11 - -#ifdef SGIArchitecture -#if OSMajorVersion == 5 && OSMinorVersion < 3 || OSMajorVersion == 6 && OSMinorVersion < 2 - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#endif -/* Even though we want to build the distribution with -n32, Navigator 3.0 - * binaries are still built on IRIX 5.2, which means we need to use the - * old style object format. This is a hack because this Imakefile gets - * included too late to do this properly, that is to say that the - * CCOPTIONS in Imake.tmpl gets the -n32 options that we don't want, - * but the CCOPTIONS in Library.tmpl does get set correctly, and over- - * rides the value. So it works, but it's not pretty. - */ -#undef sgiCCOptions -#define sgiCCOptions -xansi -#ifdef Mips64Architecture - SHLIBLDFLAGS = -shared -#endif - LD = ld -#endif - -#ifdef SunArchitecture -VENDOR_INCLUDES = -I/usr/openwin/include -#if OSMajorVersion < 5 || OSMajorVersion == 5 && OSMinorVersion < 6 - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#endif -#if !HasGcc -/* - * Based on Xmd.h 2.6 appears to be no more than R6pl11, so we need this. - * Hopefully Sun will fix this in 2.7. - */ -#undef DefaultCCOptions -#define DefaultCCOptions -Xc -#endif -#if OSMajorVersion == 4 -FUNCPROTO_DEFINES = -DXFUNCPROTO_NOT_AVAILABLE -#endif -#endif - -#ifdef HPArchitecture -/* Even though HP ships R6 in 10.20, Netscape 3.x is built on HPUX 9 and is - * linked against X11R5 libraries, so we continue to use _XtRegisterWindow - * until such time as Netscape releases a version that is linked with X11R6. - */ - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#if OSMajorVersion < 10 || (OSMajorVersion == 10 && OSMinorVersion < 2) - TOP_INCLUDES = -I/usr/include -I$(BUILDINCDIR) -#else - TOP_INCLUDES = -I/usr/include/X11R5 -I$(BUILDINCDIR) -#endif -#endif - -#if defined(AlphaArchitecture) && defined(OSF1Architecture) -#if OSMajorVersion < 4 - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#endif -#endif - -#ifdef IBMArchitecture -/* No clue when IBM might ship R6 */ - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#endif - -#endif /* UseInstalledX11 */ - +XCOMM -DPLUGIN_TRACE can be added to the following definition to debug PLUGIN_DEFINES = -DXP_UNIX PLUGIN_INCLUDES = -I./include @@ -107,56 +36,7 @@ OBJS = Main.o SetWin.o PProcess.o NewNDest.o Global.o stubs.o \ $(PARAMS_OBJS) $(XMISC_OBJS) -#if UseInstalledX11 - -XCOMM we need to link in the right libraries so it will work no matter -XCOMM which libraries Netscape itself is using. -#if !VendorHasX11R6_3libXext -X11R6_3_EXTENSIONS = ../libxplugin/libxplugin.a -#ifdef SunArchitecture -PLUGIN_LDOPTIONS = -L/usr/openwin/lib -CCENVSETUP = -#if OSMajorVersion == 5 && OSMinorVersion > 5 -RXICELIB = $(ICELIB) -#endif -#if OSMajorVersion == 4 - EXTENSIONLIB = -#endif -#endif -#ifdef HPArchitecture -#if OSMajorVersion < 10 || (OSMajorVersion == 10 && OSMinorVersion < 2) - LDPRELIBS = -L/usr/lib/X11 -#else - LDPRELIBS = -L/usr/lib/X11R5 -#endif -#endif -#ifdef IBMArchitecture - XTOOLONLYLIB = -lXm -lXt - EXTENSIONLIB = -lXext - XONLYLIB = -lX11 - RXICELIB = $(ICELIB) - LDPOSTLIBS = - LDPRELIBS = -#endif -#ifdef SequentArchitecture - RXICELIB = $(ICELIB) - XONLYLIB = -lX11 -lsocket -PLUGIN_LDOPTIONS = $(LDPRELIBS) -#endif -#else -PLUGIN_LDOPTIONS = $(LDPRELIBS) -#endif - -/* Sun and HP don't ship it yet, SGI has it inside libXt. */ -#if defined(AlphaArchitecture) && defined(OSF1Architecture) -RXICELIB = $(ICELIB) -#endif - -#else /* UseInstalledX11 */ -PLUGIN_LDOPTIONS = $(LDPRELIBS) -#endif /* UseInstalledX11 */ - - REQUIREDLIBS = $(X11R6_3_EXTENSIONS) $(PLUGIN_LDOPTIONS) $(RXICELIB) $(XTOOLONLYLIB) $(XLIB) + REQUIREDLIBS = $(LDPRELIB) XawClientLibs $(XTOOLONLYLIB) $(XPLIB) $(XLIB) #include @@ -171,10 +51,4 @@ DependTarget() InstallManPage(libxrx,$(MANDIR)) -#ifdef IBMArchitecture -install:: shr.o - $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) shr.o $(DESTDIR)$(SHLIBDIR)/lib$(LIBNAME).so - $(RM) $(DESTDIR)$(SHLIBDIR)/lib$(LIBNAME).a -#endif - #endif /* HasSharedLibraries */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/plugin/Main.c x11r682/xc/programs/xrx/plugin/Main.c --- xc/programs/xrx/plugin/Main.c 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xrx/plugin/Main.c 2005-01-24 06:01:54.000000000 +0100 @@ -52,11 +52,20 @@ * */ -#include -#include + #include "RxPlugin.h" -#include "X11/StringDefs.h" +#include +#ifdef USE_MOTIF +extern WidgetClass xmLabelGadgetClass; +extern WidgetClass xmPushButtonGadgetClass; +#else +#include +#include +#endif /* USE_MOTIF */ + +#include +#include /*********************************************************************** * Utility functions to deal with list of arguments @@ -380,14 +389,6 @@ StartApplication(This); } -#if defined(linux) || (defined(sun) && !defined(SVR4)) -/* deficient linux linker semantics */ -static WidgetClass xmLabelGadgetClass; -static WidgetClass xmPushButtonGadgetClass; -#else -extern WidgetClass xmLabelGadgetClass; -extern WidgetClass xmPushButtonGadgetClass; -#endif void RxpSetStatusWidget(PluginInstance* This, PluginState state) @@ -415,35 +416,12 @@ XrmPutStringResource (&db, "*Rx_Start.labelString", "Start"); XrmPutStringResource (&db, "RxPlugin_BeenHere", "YES"); } -#if defined(linux) || (defined(sun) && !defined(SVR4)) - /* - lame loader semantics mean we have to go fishing around to - come up with widget class records so we can create some widgets. - - Names of widgets changed in 4.x, so look for those names too - for linux. - - If Microsoft ever does IE for Linux we'll have to figure out - those names too. - */ - if (xmLabelGadgetClass == NULL) { - Widget w; - - w = XtNameToWidget (This->toplevel_widget, "*topLeftArea.urlLabel"); - if (w == NULL) - w = XtNameToWidget (This->toplevel_widget, "*urlBar.urlLocationLabel"); - xmLabelGadgetClass = XtClass (w); - w = XtNameToWidget (This->toplevel_widget, "*toolBar.abort"); - if (w == NULL) - w = XtNameToWidget (This->toplevel_widget, "*PopupMenu.openCustomUrl"); - xmPushButtonGadgetClass = XtClass (w); - } -#endif n = 0; XtSetArg(args[n], "shadowThickness", 1); n++; XtSetArg(args[n], XtNwidth, This->width); n++; XtSetArg(args[n], XtNheight, This->height); n++; +#ifdef USE_MOTIF if (state == LOADING) { /* create a label */ This->status_widget = @@ -465,6 +443,29 @@ } else if (state == RUNNING) { /* nothing else to be done */ } +#else + if (state == LOADING) { + /* create a label */ + This->status_widget = + XtCreateManagedWidget("Rx_Loading", labelWidgetClass, + This->plugin_widget, args, n); +#ifndef NO_STARTING_STATE + } else if (state == STARTING) { + /* create a label */ + This->status_widget = + XtCreateManagedWidget("Rx_Starting", labelWidgetClass, + This->plugin_widget, args, n); +#endif + } else if (state == WAITING) { + /* create a push button */ + This->status_widget = + XtCreateManagedWidget("Rx_Start", commandWidgetClass, + This->plugin_widget, args, n); + XtAddCallback(This->status_widget, XtNcallback, StartCB, This); + } else if (state == RUNNING) { + /* nothing else to be done */ + } +#endif /* USE_MOTIF */ This->state = state; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/plugin/PProcess.c x11r682/xc/programs/xrx/plugin/PProcess.c --- xc/programs/xrx/plugin/PProcess.c 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xrx/plugin/PProcess.c 2005-01-24 06:01:54.000000000 +0100 @@ -686,6 +686,7 @@ RxpTeardown (PluginInstance* This) { if (This->toplevel_widget != NULL) { +#if 0 /* this crashes mozilla/firefox */ /* ConfigureNotify on top level */ XtRemoveRawEventHandler (This->toplevel_widget, StructureNotifyMask, @@ -697,6 +698,7 @@ True, RxpWmDelWinHandler, (XtPointer) This); +#endif #if 0 XmRemoveWMProtocolCallback (This->toplevel_widget, RxGlobal.wm_delete_window, diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/plugin/include/npapi.h x11r682/xc/programs/xrx/plugin/include/npapi.h --- xc/programs/xrx/plugin/include/npapi.h 2004-04-23 21:55:03.000000000 +0200 +++ xc/programs/xrx/plugin/include/npapi.h 2005-02-01 12:06:51.000000000 +0100 @@ -40,12 +40,15 @@ #ifndef _UINT32 typedef unsigned int uint32; #endif + +#if !(defined(_AIX) && defined(_H_INTTYPES) && defined(_ALL_SOURCE)) #ifndef _INT16 typedef short int16; #endif #ifndef _INT32 typedef int int32; #endif +#endif #ifndef FALSE #define FALSE (0) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/xnest-plugin/Imakefile x11r682/xc/programs/xrx/xnest-plugin/Imakefile --- xc/programs/xrx/xnest-plugin/Imakefile 2003-11-14 17:49:23.000000000 +0100 +++ xc/programs/xrx/xnest-plugin/Imakefile 2005-01-24 06:01:54.000000000 +0100 @@ -1,4 +1,4 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:55:03 cpqbld Exp $ +XCOMM $Xorg: Imakefile,v 1.4 2004/09/16 00:55:03 gisburn Exp $ XCOMM This isn't an option we must build a shared lib #define DoSharedLib YES @@ -7,7 +7,7 @@ #define LibName xrxnest #define SoRev SOXRXREV -SharedLibReferences(xrxnest,xrxnest,$(RXSRC),SOXRXREV,6.3) +SharedLibReferences(xrxnest,xrxnest,$(RXSRC),SOXRXREV,6.8) RXSRC = ../rx RX_INCLUDES = -I$(RXSRC) @@ -17,31 +17,6 @@ SOCKET_DEFINES = -DBSD44SOCKETS #endif -#ifdef SGIArchitecture -#if OSMajorVersion == 5 && OSMinorVersion < 3 || OSMajorVersion == 6 && OSMinorV -ersion < 2 - XT_DEFINES = -DXUSE_XTREGISTERWINDOW -#endif -/* Even though we want to build the distribution with -n32, Navigator 3.0 - * binaries are still built on IRIX 5.2, which means we need to use the - * old style object format. This is a hack because this Imakefile gets - * included too late to do this properly, that is to say that the - * CCOPTIONS in Imake.tmpl gets the -n32 options that we don't want, - * but the CCOPTIONS in Library.tmpl does get set correctly, and over- - * rides the value. So it works, but it's not pretty. - */ -#undef sgiCCOptions -#define sgiCCOptions -xansi -#ifdef Mips64Architecture - SHLIBLDFLAGS = -shared -#endif - LD = ld -#endif - -#ifdef SunArchitecture -VENDOR_INCLUDES = -I/usr/openwin/include -#endif - XCOMM -DPLUGIN_TRACE can be added to the following definition to debug PLUGIN_DEFINES = -DXP_UNIX PLUGIN_INCLUDES = -I$(PLUGINSRC) -I$(PLUGINSRC)/include @@ -57,6 +32,8 @@ OBJS = Main.o SetWin.o PProcess.o NewNDest.o XnestDis.o \ $(PLUGINSRC)/stubs.o $(PLUGIN_OBJS) + REQUIREDLIBS = $(LDPRELIB) XawClientLibs $(XTOOLONLYLIB) $(XPLIB) $(XLIB) + #include LinkFile(Main.c,$(PLUGINSRC)/Main.c) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/xnest-plugin/NewNDest.c x11r682/xc/programs/xrx/xnest-plugin/NewNDest.c --- xc/programs/xrx/xnest-plugin/NewNDest.c 2003-11-14 17:49:23.000000000 +0100 +++ xc/programs/xrx/xnest-plugin/NewNDest.c 2005-01-24 06:01:54.000000000 +0100 @@ -59,7 +59,14 @@ void RxpDestroy(PluginInstance *This) { + int status; + /* kill child process */ - kill(This->child_pid, SIGKILL); + kill(This->child_pid, SIGTERM); + + /* ... and fetch the status (to avoid dead process childs + * floating around) */ + waitpid(This->child_pid, &status, 0); + RxpFreeXnestDisplayNumber(This->display_num); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/xnest-plugin/SetWin.c x11r682/xc/programs/xrx/xnest-plugin/SetWin.c --- xc/programs/xrx/xnest-plugin/SetWin.c 2003-11-14 17:49:23.000000000 +0100 +++ xc/programs/xrx/xnest-plugin/SetWin.c 2005-01-24 06:01:54.000000000 +0100 @@ -65,7 +65,6 @@ DestroyCB (Widget widget, XtPointer client_data, XtPointer call_data) { PluginInstance* This = (PluginInstance*) client_data; - int i; #ifdef PLUGIN_TRACE fprintf (stderr, "DestroyCB, This: 0x%x\n", This); #endif @@ -74,7 +73,7 @@ if (This->dont_reparent == RxFalse) { XUnmapWindow(XtDisplay(widget), This->window); XReparentWindow(XtDisplay(widget), This->window, - RootWindowOfScreen(XtScreen(widget)), 0, 0); + XRootWindowOfScreen(XtScreen(widget)), 0, 0); This->dont_reparent = RxTrue; } else This->dont_reparent = RxFalse; @@ -177,20 +176,23 @@ #endif pid = fork(); if (pid == 0) { /* child process */ - static char *argv[] = { - "Xnest", - "-ac", /* no access control (sic!) */ - ":00", /* display number */ - "-parent", - "01234567890123456789", /* parent window id */ - NULL - }; - close(ConnectionNumber(display)); - - sprintf(argv[2], ":%d", This->display_num); - sprintf(argv[4], "%ld", This->window); + char buffer1[64], + buffer2[64]; + char *xnest_argv[6]; + + xnest_argv[0] = "Xnest"; + xnest_argv[1] = "-ac"; /* no access control (sic!) */ + xnest_argv[2] = buffer1; /* display number */ + xnest_argv[3] = "-parent"; + xnest_argv[4] = buffer2; /* parent window id */ + xnest_argv[5] = NULL; + + close(XConnectionNumber(display)); + + sprintf(xnest_argv[2], ":%d", This->display_num); + sprintf(xnest_argv[4], "%ld", This->window); /* exec Xnest */ - execvp("Xnest", argv); + execvp("Xnest", xnest_argv); perror("Xnest"); return NPERR_GENERIC_ERROR; } else { /* parent process */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xrx/xnest-plugin/XnestDis.c x11r682/xc/programs/xrx/xnest-plugin/XnestDis.c --- xc/programs/xrx/xnest-plugin/XnestDis.c 2004-04-23 21:55:04.000000000 +0200 +++ xc/programs/xrx/xnest-plugin/XnestDis.c 2005-02-01 12:06:51.000000000 +0100 @@ -29,24 +29,53 @@ /* $XFree86$ */ #include "RxPlugin.h" +#include /*********************************************************************** * Utility functions and global variable to manage display numbers ***********************************************************************/ -/* maximum numbers of concurrent instances */ -#define MAX_PLUGINS 10 +/* maximum numbers of concurrent instances (per machine) */ +#define MAX_PLUGINS 128 -/* start from 5 to avoid possible conflict with multi-display X server */ -#define XNEST_OFFSET 5 +/* start from 80 to avoid possible conflict with multi-display X server + * like SunRay,LTSP, etc.*/ +#define XNEST_OFFSET 80 /* global allowing to know which display numbers are in use */ -static int16 xnest_display_numbers[MAX_PLUGINS]; +static char xnest_display_numbers[MAX_PLUGINS]; void RxpInitXnestDisplayNumbers() { - memset(xnest_display_numbers, 0, sizeof(int16) * MAX_PLUGINS); + memset(xnest_display_numbers, 0, sizeof(char) * MAX_PLUGINS); +} + +static +Bool IsDisplayNumFree(int id) +{ + char fnamebuf[256]; + struct stat sbuf; + int res; + + /* /tmp/.X%d-lock is more or less the official way... */ + sprintf(fnamebuf, "/tmp/.X%d-lock", id); + res = stat(fnamebuf, &sbuf); + if (res == 0) + return False; + + /* ... but then we have to test for the old stuff, too... ;-( */ + sprintf(fnamebuf, "/tmp/.X11-pipe/X%d", id); + res = stat(fnamebuf, &sbuf); + if (res == 0) + return False; + + sprintf(fnamebuf, "/tmp/.X11-unix/X%d", id); + res = stat(fnamebuf, &sbuf); + if (res == 0) + return False; + + return True; } /* function returning first display number available */ @@ -55,7 +84,8 @@ { int i; for (i = 0; i < MAX_PLUGINS; i++) - if (xnest_display_numbers[i] == 0) { + if ((xnest_display_numbers[i] == 0) && + IsDisplayNumFree(i + XNEST_OFFSET)) { xnest_display_numbers[i] = 1; return i + XNEST_OFFSET; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xset/Imakefile x11r682/xc/programs/xset/Imakefile --- xc/programs/xset/Imakefile 2004-09-02 10:40:33.000000000 +0200 +++ xc/programs/xset/Imakefile 2004-12-13 08:21:02.000000000 +0100 @@ -16,12 +16,12 @@ #if BuildXprintLib && BuildXprintClients DEPXPRINTLIBS = $(DEPXPRINTLIB) XPRINTLIBS = $(XPLIB) - XPRINTDEFINES = -DINCLUDE_XPRINT_SUPPORT + XPRINTDEFINES = -DBUILD_PRINTSUPPORT #endif DEFINES = ExtensionDefines DPMSDefines \ FontCacheExtensionDefines \ - XkbDefines + XkbDefines $(XPRINTDEFINES) DEPLIBS = $(DEPXMUULIB) $(DEPXLIB) $(DEPXF86LIBS) $(DEPFONTLIBS) LOCAL_LIBRARIES = $(XMUULIB) $(XF86LIBS) $(FONTLIBS) $(XPRINTLIBS) $(XLIB) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xset/xset.c x11r682/xc/programs/xset/xset.c --- xc/programs/xset/xset.c 2004-09-02 07:50:38.000000000 +0200 +++ xc/programs/xset/xset.c 2004-12-13 08:21:02.000000000 +0100 @@ -88,7 +88,7 @@ static Status set_font_cache(Display *, long, long, long); static void query_cache_status(Display *dpy); #endif -#ifdef INCLUDE_XPRINT_SUPPORT +#ifdef BUILD_PRINTSUPPORT #include #endif @@ -206,7 +206,7 @@ if (dpy == NULL) { fprintf(stderr, "%s: unable to open display \"%s\"\n", argv[0], XDisplayName (disp)); - exit(1); + exit(EXIT_FAILURE); } XSetErrorHandler (local_xerror); for (i = 1; i < argc; ) { @@ -356,7 +356,7 @@ } } #endif -#ifdef INCLUDE_XPRINT_SUPPORT +#ifdef BUILD_PRINTSUPPORT else if (strcmp(arg, "rehashprinterlist") == 0) { /* rehash list of printers */ short dummy; if (XpQueryVersion(dpy, &dummy, &dummy)) { @@ -517,20 +517,20 @@ { fprintf(stderr, "illegal combination of values\n"); fprintf(stderr, " standby time of %d is greater than suspend time of %d\n", standby_timeout, suspend_timeout); - exit(0); + exit(EXIT_FAILURE); } if ((off_timeout != 0)&&(suspend_timeout > off_timeout)) { fprintf(stderr, "illegal combination of values\n"); fprintf(stderr, " suspend time of %d is greater than off time of %d\n", suspend_timeout, off_timeout); - exit(0); + exit(EXIT_FAILURE); } if ((suspend_timeout == 0)&&(off_timeout != 0)&& (standby_timeout > off_timeout)) { fprintf(stderr, "illegal combination of values\n"); fprintf(stderr, " standby time of %d is greater than off time of %d\n", standby_timeout, off_timeout); - exit(0); + exit(EXIT_FAILURE); } DPMSEnable(dpy); DPMSSetTimeouts(dpy, standby_timeout, suspend_timeout, off_timeout); @@ -948,7 +948,7 @@ fprintf (stderr, "%s: internal error, only parsed %d of %d directories.\n", progName, i, ndirs); - exit (1); + exit (EXIT_FAILURE); } } @@ -1513,7 +1513,7 @@ fprintf (stderr, " Show font cache statistics:\n"); fprintf (stderr, "\t fc s\n"); #endif -#ifdef INCLUDE_XPRINT_SUPPORT +#ifdef BUILD_PRINTSUPPORT fprintf (stderr, " To control Xprint features:\n"); fprintf (stderr, "\t rehashprinterlist Recomputes the list of available printers\n"); #endif @@ -1546,14 +1546,14 @@ fprintf (stderr, "\t s expose s noexpose\n"); fprintf (stderr, "\t s activate s reset\n"); fprintf (stderr, " For status information: q\n"); - exit(0); + exit(EXIT_SUCCESS); } static void error(char *message) { fprintf( stderr, "%s: %s\n", progName, message ); - exit( 1 ); + exit(EXIT_FAILURE); } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/INSTALL x11r682/xc/programs/xterm/INSTALL --- xc/programs/xterm/INSTALL 2004-08-13 14:57:19.000000000 +0200 +++ xc/programs/xterm/INSTALL 2005-01-12 22:45:09.000000000 +0100 @@ -1,5 +1,5 @@ --- $XTermId: INSTALL,v 1.75 2004/05/13 00:41:20 tom Exp $ --- $XFree86: xc/programs/xterm/INSTALL,v 3.35 2004/05/13 00:41:20 dickey Exp $ +-- $XTermId: INSTALL,v 1.77 2004/12/01 01:27:46 tom Exp $ +-- $XFree86: xc/programs/xterm/INSTALL,v 3.36 2004/12/01 01:27:46 dickey Exp $ -- Thomas E. Dickey Xterm is normally built as part of the X Window System source tree, using @@ -287,6 +287,13 @@ This sets "--enable-wide-chars" as a side-effect. + --enable-mini-luit enable support for poor man's luit filter (Latin-9) + + Provide built-in support for Latin-9, relying on having specified + Unicode (ISO10646) fonts and setting the locale resource to "checkfont". + + This sets "--enable-luit" as a side-effect. + --enable-sco-fkeys enable support for SCO-style function keys Compile-in code to support SCO-style function keys. diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/MANIFEST x11r682/xc/programs/xterm/MANIFEST --- xc/programs/xterm/MANIFEST 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/MANIFEST 2005-01-12 22:45:09.000000000 +0100 @@ -1,4 +1,4 @@ -MANIFEST for xterm, version xterm-196 +MANIFEST for xterm, version xterm-197 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/Makefile.in x11r682/xc/programs/xterm/Makefile.in --- xc/programs/xterm/Makefile.in 2004-08-13 14:57:19.000000000 +0200 +++ xc/programs/xterm/Makefile.in 2005-01-12 22:45:09.000000000 +0100 @@ -1,6 +1,6 @@ -## $XTermId: Makefile.in,v 1.111 2004/07/13 00:41:24 tom Exp $ +## $XTermId: Makefile.in,v 1.113 2004/12/01 01:27:46 tom Exp $ ## -## $XFree86: xc/programs/xterm/Makefile.in,v 3.48 2004/07/13 00:41:24 dickey Exp $ ## +## $XFree86: xc/programs/xterm/Makefile.in,v 3.49 2004/12/01 01:27:46 dickey Exp $ ## ## ## Copyright 2002-2003,2004 by Thomas E. Dickey ## @@ -68,7 +68,7 @@ #### End of system configuration section. #### RM = rm -f -LINT = lint +LINT = @LINT@ DESTDIR = BINDIR = $(DESTDIR)$(bindir) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/Tekproc.c x11r682/xc/programs/xterm/Tekproc.c --- xc/programs/xterm/Tekproc.c 2004-08-13 14:57:19.000000000 +0200 +++ xc/programs/xterm/Tekproc.c 2005-01-12 22:45:09.000000000 +0100 @@ -1,11 +1,11 @@ -/* $XTermId: Tekproc.c,v 1.105 2004/06/06 22:15:25 tom Exp $ */ +/* $XTermId: Tekproc.c,v 1.109 2004/12/01 01:27:46 tom Exp $ */ /* * $Xorg: Tekproc.c,v 1.5 2001/02/09 02:06:02 xorgcvs Exp $ * * Warning, there be crufty dragons here. */ -/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.49 2004/06/06 22:15:25 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.50 2004/12/01 01:27:46 dickey Exp $ */ /* @@ -232,6 +232,9 @@ { "tek-page", HandleTekPage }, { "tek-reset", HandleTekReset }, { "tek-copy", HandleTekCopy }, +#if OPT_TOOLBAR + { "set-toolbar", HandleToolbar }, +#endif }; /* *INDENT-ON* */ @@ -264,10 +267,8 @@ Sres("initialFont", "InitialFont", tek.initial_font, "large"), Sres("ginTerminator", "GinTerminator", tek.gin_terminator_str, GIN_TERM_NONE_STR), #if OPT_TOOLBAR - {XtNmenuBar, XtCMenuBar, XtRWidget, sizeof(Widget), - XtOffsetOf(TekWidgetRec, tek.menu_bar), - XtRWidget, (XtPointer) 0}, - Ires(XtNmenuHeight, XtCMenuHeight, tek.menu_height, 25), + Wres(XtNmenuBar, XtCMenuBar, tek.tb_info.menu_bar, 0), + Ires(XtNmenuHeight, XtCMenuHeight, tek.tb_info.menu_height, 25), #endif }; @@ -285,7 +286,7 @@ static void TekInitialize(Widget request, Widget wnew, ArgList args, - Cardinal * num_args); + Cardinal *num_args); static void TekPage(void); static void TekRealize(Widget gw, XtValueMask * valuemaskp, @@ -318,7 +319,7 @@ TekExpose, /* expose */ NULL, /* set_values */ NULL, /* set_values_hook */ - NULL, /* set_values_almost */ + XtInheritSetValuesAlmost, /* set_values_almost */ NULL, /* get_values_hook */ NULL, /* accept_focus */ XtVersion, /* version */ @@ -1280,7 +1281,7 @@ TekInitialize(Widget request GCC_UNUSED, Widget wnew GCC_UNUSED, ArgList args GCC_UNUSED, - Cardinal * num_args GCC_UNUSED) + Cardinal *num_args GCC_UNUSED) { Widget tekparent = SHELL_OF(wnew); @@ -1749,8 +1750,8 @@ if ((tekcopyfd = open_userfile(screen->uid, screen->gid, buf, False)) >= 0) { sprintf(initbuf, "%c%c%c%c", - ESC, screen->page.fontsize + '8', - ESC, screen->page.linetype + '`'); + ESC, (char)(screen->page.fontsize + '8'), + ESC, (char)(screen->page.linetype + '`')); write(tekcopyfd, initbuf, 4); Tp = &Tek0; do { diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/VTPrsTbl.c x11r682/xc/programs/xterm/VTPrsTbl.c --- xc/programs/xterm/VTPrsTbl.c 2004-08-13 14:57:19.000000000 +0200 +++ xc/programs/xterm/VTPrsTbl.c 2005-01-12 22:45:09.000000000 +0100 @@ -1,10 +1,10 @@ -/* $XTermId: VTPrsTbl.c,v 1.36 2004/05/13 00:41:20 tom Exp $ */ +/* $XTermId: VTPrsTbl.c,v 1.39 2004/12/01 01:27:46 tom Exp $ */ /* * $Xorg: VTPrsTbl.c,v 1.3 2000/08/17 19:55:07 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/VTPrsTbl.c,v 3.26 2004/05/13 00:41:20 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/VTPrsTbl.c,v 3.27 2004/12/01 01:27:46 dickey Exp $ */ /* * * Copyright 1999-2000,2004 by Thomas E. Dickey @@ -771,14 +771,14 @@ CASE_CSI_QUOTE_STATE, CASE_CSI_IGNORE, /* $ % & ' */ -CASE_CSI_IGNORE, +CASE_CSI_DOLLAR_STATE, CASE_CSI_IGNORE, CASE_CSI_IGNORE, CASE_CSI_TICK_STATE, /* ( ) * + */ CASE_CSI_IGNORE, CASE_CSI_IGNORE, -CASE_CSI_IGNORE, +CASE_CSI_STAR_STATE, CASE_CSI_IGNORE, /* , - . / */ CASE_CSI_IGNORE, @@ -2021,6 +2021,656 @@ }; #endif /* OPT_DEC_LOCATOR */ +#if OPT_DEC_RECTOPS +Const PARSE_T csi_dollar_table[] = /* CSI ... $ */ +{ +/* NUL SOH STX ETX */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* EOT ENQ ACK BEL */ +CASE_IGNORE, +CASE_ENQ, +CASE_IGNORE, +CASE_BELL, +/* BS HT NL VT */ +CASE_BS, +CASE_TAB, +CASE_VMOT, +CASE_VMOT, +/* NP CR SO SI */ +CASE_VMOT, +CASE_CR, +CASE_SO, +CASE_SI, +/* DLE DC1 DC2 DC3 */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* DC4 NAK SYN ETB */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* CAN EM SUB ESC */ +CASE_GROUND_STATE, +CASE_IGNORE, +CASE_GROUND_STATE, +CASE_ESC, +/* FS GS RS US */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* SP ! " # */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* $ % & ' */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* ( ) * + */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* , - . / */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 0 1 2 3 */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 4 5 6 7 */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 8 9 : ; */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* < = > ? */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* @ A B C */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* D E F G */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* H I J K */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* L M N O */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* P Q R S */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* T U V W */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* X Y Z [ */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* \ ] ^ _ */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* ` a b c */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* d e f g */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* h i j k */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* l m n o */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* p q r s */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_DECCARA, +CASE_GROUND_STATE, +/* t u v w */ +CASE_DECRARA, +CASE_GROUND_STATE, +CASE_DECCRA, +CASE_GROUND_STATE, +/* x y z { */ +CASE_DECFRA, +CASE_GROUND_STATE, +CASE_DECERA, +CASE_DECSERA, +/* | } ~ DEL */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_IGNORE, +/* 0x80 0x81 0x82 0x83 */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x84 0x85 0x86 0x87 */ +CASE_IND, +CASE_NEL, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x88 0x89 0x8a 0x8b */ +CASE_HTS, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x8c 0x8d 0x8e 0x8f */ +CASE_GROUND_STATE, +CASE_RI, +CASE_SS2, +CASE_SS3, +/* 0x90 0x91 0x92 0x93 */ +CASE_DCS, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x94 0x95 0x96 0x97 */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_SPA, +CASE_EPA, +/* 0x98 0x99 0x9a 0x9b */ +CASE_SOS, +CASE_GROUND_STATE, +CASE_DECID, +CASE_CSI_STATE, +/* 0x9c 0x9d 0x9e 0x9f */ +CASE_ST, +CASE_OSC, +CASE_PM, +CASE_APC, +/* nobreakspace exclamdown cent sterling */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* currency yen brokenbar section */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* diaeresis copyright ordfeminine guillemotleft */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* notsign hyphen registered macron */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* degree plusminus twosuperior threesuperior */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* acute mu paragraph periodcentered */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* cedilla onesuperior masculine guillemotright */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* onequarter onehalf threequarters questiondown */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* Agrave Aacute Acircumflex Atilde */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Adiaeresis Aring AE Ccedilla */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Egrave Eacute Ecircumflex Ediaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Igrave Iacute Icircumflex Idiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Eth Ntilde Ograve Oacute */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Ocircumflex Otilde Odiaeresis multiply */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Ooblique Ugrave Uacute Ucircumflex */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Udiaeresis Yacute Thorn ssharp */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* agrave aacute acircumflex atilde */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* adiaeresis aring ae ccedilla */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* egrave eacute ecircumflex ediaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* igrave iacute icircumflex idiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* eth ntilde ograve oacute */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_DECCARA, +CASE_GROUND_STATE, +/* ocircumflex otilde odiaeresis division */ +CASE_DECRARA, +CASE_GROUND_STATE, +CASE_DECCRA, +CASE_GROUND_STATE, +/* oslash ugrave uacute ucircumflex */ +CASE_DECFRA, +CASE_GROUND_STATE, +CASE_DECERA, +CASE_DECSERA, +/* udiaeresis yacute thorn ydiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +}; + +Const PARSE_T csi_star_table[] = /* CSI ... * */ +{ +/* NUL SOH STX ETX */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* EOT ENQ ACK BEL */ +CASE_IGNORE, +CASE_ENQ, +CASE_IGNORE, +CASE_BELL, +/* BS HT NL VT */ +CASE_BS, +CASE_TAB, +CASE_VMOT, +CASE_VMOT, +/* NP CR SO SI */ +CASE_VMOT, +CASE_CR, +CASE_SO, +CASE_SI, +/* DLE DC1 DC2 DC3 */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* DC4 NAK SYN ETB */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* CAN EM SUB ESC */ +CASE_GROUND_STATE, +CASE_IGNORE, +CASE_GROUND_STATE, +CASE_ESC, +/* FS GS RS US */ +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +CASE_IGNORE, +/* SP ! " # */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* $ % & ' */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* ( ) * + */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* , - . / */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 0 1 2 3 */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 4 5 6 7 */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* 8 9 : ; */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* < = > ? */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* @ A B C */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* D E F G */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* H I J K */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* L M N O */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* P Q R S */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* T U V W */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* X Y Z [ */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* \ ] ^ _ */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* ` a b c */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* d e f g */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* h i j k */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* l m n o */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* p q r s */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* t u v w */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* x y z { */ +CASE_DECSACE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* | } ~ DEL */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_IGNORE, +/* 0x80 0x81 0x82 0x83 */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x84 0x85 0x86 0x87 */ +CASE_IND, +CASE_NEL, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x88 0x89 0x8a 0x8b */ +CASE_HTS, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x8c 0x8d 0x8e 0x8f */ +CASE_GROUND_STATE, +CASE_RI, +CASE_SS2, +CASE_SS3, +/* 0x90 0x91 0x92 0x93 */ +CASE_DCS, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* 0x94 0x95 0x96 0x97 */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_SPA, +CASE_EPA, +/* 0x98 0x99 0x9a 0x9b */ +CASE_SOS, +CASE_GROUND_STATE, +CASE_DECID, +CASE_CSI_STATE, +/* 0x9c 0x9d 0x9e 0x9f */ +CASE_ST, +CASE_OSC, +CASE_PM, +CASE_APC, +/* nobreakspace exclamdown cent sterling */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* currency yen brokenbar section */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* diaeresis copyright ordfeminine guillemotleft */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* notsign hyphen registered macron */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* degree plusminus twosuperior threesuperior */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* acute mu paragraph periodcentered */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* cedilla onesuperior masculine guillemotright */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* onequarter onehalf threequarters questiondown */ +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +CASE_CSI_IGNORE, +/* Agrave Aacute Acircumflex Atilde */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Adiaeresis Aring AE Ccedilla */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Egrave Eacute Ecircumflex Ediaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Igrave Iacute Icircumflex Idiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Eth Ntilde Ograve Oacute */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Ocircumflex Otilde Odiaeresis multiply */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Ooblique Ugrave Uacute Ucircumflex */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* Udiaeresis Yacute Thorn ssharp */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* agrave aacute acircumflex atilde */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* adiaeresis aring ae ccedilla */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* egrave eacute ecircumflex ediaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* igrave iacute icircumflex idiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* eth ntilde ograve oacute */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* ocircumflex otilde odiaeresis division */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* oslash ugrave uacute ucircumflex */ +CASE_DECSACE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +/* udiaeresis yacute thorn ydiaeresis */ +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +CASE_GROUND_STATE, +}; +#endif /* OPT_DEC_RECTOPS */ + Const PARSE_T dec_table[] = /* CSI ? */ { /* NUL SOH STX ETX */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/VTparse.def x11r682/xc/programs/xterm/VTparse.def --- xc/programs/xterm/VTparse.def 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/VTparse.def 2005-01-12 22:45:09.000000000 +0100 @@ -1,11 +1,12 @@ +# $XTermId: VTparse.def,v 1.22 2004/12/01 01:27:46 tom Exp $ # # $Xorg: VTparse.def,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ # -# List of symbols that need to be defined for VTparse.h. If you need to +# List of symbols that need to be defined for VTparse.h. If you need to # change any of the CASE_ macros, make the change here and rerun the command # shown in VTparse.h. # -# $XFree86: xc/programs/xterm/VTparse.def,v 3.14 2003/12/31 17:12:26 dickey Exp $ +# $XFree86: xc/programs/xterm/VTparse.def,v 3.15 2004/12/01 01:27:46 dickey Exp $ # CASE_GROUND_STATE @@ -130,3 +131,12 @@ CASE_CSI_IGNORE CASE_VT52_IGNORE CASE_VT52_FINISH +CASE_CSI_DOLLAR_STATE +CASE_DECCRA +CASE_DECERA +CASE_DECFRA +CASE_DECSERA +CASE_DECSACE +CASE_DECCARA +CASE_DECRARA +CASE_CSI_STAR_STATE diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/VTparse.h x11r682/xc/programs/xterm/VTparse.h --- xc/programs/xterm/VTparse.h 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/VTparse.h 2005-01-12 22:45:09.000000000 +0100 @@ -1,10 +1,12 @@ +/* $XTermId: VTparse.h,v 1.33 2004/12/01 01:27:46 tom Exp $ */ + /* * $Xorg: VTparse.h,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/VTparse.h,v 3.19 2003/12/31 17:12:26 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/VTparse.h,v 3.20 2004/12/01 01:27:46 dickey Exp $ */ /* - * Copyright 2002 by Thomas E. Dickey + * Copyright 2002-2003,2004 by Thomas E. Dickey * * All Rights Reserved * @@ -63,20 +65,17 @@ /* * PARSE_T has to be large enough to handle the number of cases enumerated here. */ -typedef char PARSE_T; +typedef unsigned char PARSE_T; extern Const PARSE_T ansi_table[]; +extern Const PARSE_T cigtable[]; +extern Const PARSE_T csi2_table[]; extern Const PARSE_T csi_ex_table[]; extern Const PARSE_T csi_quo_table[]; -#if OPT_DEC_LOCATOR -extern Const PARSE_T csi_tick_table[]; -#endif /* OPT_DEC_LOCATOR */ extern Const PARSE_T csi_table[]; -extern Const PARSE_T csi2_table[]; extern Const PARSE_T dec2_table[]; extern Const PARSE_T dec3_table[]; extern Const PARSE_T dec_table[]; -extern Const PARSE_T cigtable[]; extern Const PARSE_T eigtable[]; extern Const PARSE_T esc_sp_table[]; extern Const PARSE_T esc_table[]; @@ -84,6 +83,15 @@ extern Const PARSE_T scstable[]; extern Const PARSE_T sos_table[]; +#if OPT_DEC_LOCATOR +extern Const PARSE_T csi_tick_table[]; +#endif /* OPT_DEC_LOCATOR */ + +#if OPT_DEC_RECTOPS +extern Const PARSE_T csi_dollar_table[]; +extern Const PARSE_T csi_star_table[]; +#endif /* OPT_DEC_LOCATOR */ + #if OPT_VT52_MODE extern Const PARSE_T vt52_table[]; extern Const PARSE_T vt52_esc_table[]; @@ -227,5 +235,14 @@ #define CASE_CSI_IGNORE 119 #define CASE_VT52_IGNORE 120 #define CASE_VT52_FINISH 121 +#define CASE_CSI_DOLLAR_STATE 122 +#define CASE_DECCRA 123 +#define CASE_DECERA 124 +#define CASE_DECFRA 125 +#define CASE_DECSERA 126 +#define CASE_DECSACE 127 +#define CASE_DECCARA 128 +#define CASE_DECRARA 129 +#define CASE_CSI_STAR_STATE 130 #endif /* included_VTparse_h */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/XTerm.ad x11r682/xc/programs/xterm/XTerm.ad --- xc/programs/xterm/XTerm.ad 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/XTerm.ad 2005-01-12 22:45:09.000000000 +0100 @@ -3,8 +3,8 @@ ! ! ! -! $XTermId: XTerm.ad,v 1.61 2004/07/13 00:41:24 tom Exp $ -! $XFree86: xc/programs/xterm/XTerm.ad,v 3.28 2004/07/13 00:41:24 dickey Exp $ +! $XTermId: XTerm.ad,v 1.63 2004/12/01 01:27:46 tom Exp $ +! $XFree86: xc/programs/xterm/XTerm.ad,v 3.29 2004/12/01 01:27:46 dickey Exp $ *saveLines: 1024 @@ -17,6 +17,7 @@ *SimpleMenu*Cursor: left_ptr *mainMenu.Label: Main Options +*mainMenu*toolbar*Label: Toolbar *mainMenu*securekbd*Label: Secure Keyboard *mainMenu*allowsends*Label: Allow SendEvents *mainMenu*redraw*Label: Redraw Window diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/aclocal.m4 x11r682/xc/programs/xterm/aclocal.m4 --- xc/programs/xterm/aclocal.m4 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/aclocal.m4 2005-01-12 22:45:09.000000000 +0100 @@ -1,6 +1,6 @@ -dnl $XTermId: aclocal.m4,v 1.173 2004/07/13 00:41:24 tom Exp $ +dnl $XTermId: aclocal.m4,v 1.177 2004/12/01 01:27:46 tom Exp $ dnl -dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.53 2004/07/13 00:41:24 dickey Exp $ +dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.54 2004/12/01 01:27:46 dickey Exp $ dnl dnl --------------------------------------------------------------------------- dnl @@ -585,7 +585,7 @@ fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 15 updated: 2003/07/05 18:42:30 +dnl CF_GCC_WARNINGS version: 16 updated: 2004/07/23 14:40:34 dnl --------------- dnl Check if the compiler supports useful warning options. There's a few that dnl we don't use, simply because they're too noisy: @@ -597,6 +597,13 @@ dnl is enabled for ncurses using "--enable-const". dnl -pedantic dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl AC_DEFUN([CF_GCC_WARNINGS], [ AC_REQUIRE([CF_GCC_VERSION]) @@ -622,7 +629,7 @@ Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST + Wundef $cf_warn_CONST $1 do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" if AC_TRY_EVAL(ac_compile); then @@ -685,7 +692,7 @@ [AC_DIVERT_HELP([$1])dnl ])dnl dnl --------------------------------------------------------------------------- -dnl CF_IMAKE_CFLAGS version: 22 updated: 2004/04/25 20:55:33 +dnl CF_IMAKE_CFLAGS version: 23 updated: 2004/11/30 19:04:33 dnl --------------- dnl Use imake to obtain compiler flags. We could, in principle, write tests to dnl get these, but if imake is properly configured there is no point in doing @@ -815,6 +822,16 @@ fi fi +# Some imake configurations define PROJECTROOT with an empty value. Remove +# the empty definition. +case $IMAKE_CFLAGS in +*-DPROJECTROOT=/*) + ;; +*) + IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` + ;; +esac + CF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) CF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) @@ -880,6 +897,64 @@ test $cf_cv_path_lastlog != no && AC_DEFINE(USE_LASTLOG) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 3 updated: 1997/09/07 14:05:52 +dnl ---------- +dnl Write a debug message to config.log, along with the line number in the +dnl configure script. +AC_DEFUN([CF_MSG_LOG],[ +echo "(line __oline__) testing $* ..." 1>&AC_FD_CC +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 1 updated: 2004/10/17 10:43:13 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[ +cf_POSIX_C_SOURCE=ifelse($1,,199506L,$1) +AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ + CF_MSG_LOG(if the symbol is already defined go no further) + AC_TRY_COMPILE([#include ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [case .$cf_POSIX_C_SOURCE in + .[[12]]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + .2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_POSIX_SOURCE" + ;; + .*) + cf_cv_posix_c_source="-D_POSIX_SOURCE" + ;; + esac + CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) + cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source" + CF_MSG_LOG(if the second compile does not leave our definition intact error) + AC_TRY_COMPILE([#include ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CPPFLAGS="$cf_save" + ]) +]) +test "$cf_cv_posix_c_source" != no && CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source" +])dnl +dnl --------------------------------------------------------------------------- dnl CF_POSIX_WAIT version: 2 updated: 2000/05/29 16:16:04 dnl ------------- dnl Check for POSIX wait support @@ -1508,19 +1583,32 @@ test "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT) ]) dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_SOURCE version: 12 updated: 2004/06/26 18:29:41 +dnl CF_XOPEN_SOURCE version: 15 updated: 2004/11/23 15:41:32 dnl --------------- dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, dnl or adapt to the vendor's definitions to get equivalent functionality. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE AC_DEFUN([CF_XOPEN_SOURCE],[ + +cf_XOPEN_SOURCE=ifelse($1,,500,$1) +cf_POSIX_C_SOURCE=ifelse($2,,199506L,$2) + case $host_os in #(vi freebsd*) #(vi - CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600" + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" ;; hpux*) #(vi CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE" ;; -irix6.*) #(vi +irix[[56]].*) #(vi CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE" ;; linux*|gnu*) #(vi @@ -1552,37 +1640,18 @@ #endif], [cf_cv_xopen_source=no], [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500" + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" AC_TRY_COMPILE([#include ],[ #ifdef _XOPEN_SOURCE make an error #endif], [cf_cv_xopen_source=no], - [cf_cv_xopen_source=yes]) - CPPFLAGS="$cf_save" - ]) -]) -test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500" - - # FreeBSD 5.x headers demand this... - AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_xopen_source,[ - AC_TRY_COMPILE([#include ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _POSIX_C_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_cv_xopen_source=yes]) + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) CPPFLAGS="$cf_save" ]) ]) -test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE" +test "$cf_cv_xopen_source" != no && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) ;; esac ]) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/button.c x11r682/xc/programs/xterm/button.c --- xc/programs/xterm/button.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/button.c 2005-01-12 22:45:09.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: button.c,v 1.160 2004/07/20 01:14:41 tom Exp $ */ +/* $XTermId: button.c,v 1.171 2004/12/01 01:27:46 tom Exp $ */ /* $Xorg: button.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */ /* @@ -52,7 +52,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. */ -/* $XFree86: xc/programs/xterm/button.c,v 3.75 2004/07/20 01:14:41 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/button.c,v 3.76 2004/12/01 01:27:46 dickey Exp $ */ /* button.c Handles button events in the terminal emulator. @@ -177,7 +177,7 @@ static void TrackDown(XButtonEvent * event); static void _OwnSelection(XtermWidget termw, String * selections, Cardinal count); static void do_select_end(Widget w, XEvent * event, String * params, - Cardinal * num_params, Bool use_cursor_loc); + Cardinal *num_params, Bool use_cursor_loc); Boolean SendMousePosition(Widget w, XEvent * event) @@ -825,7 +825,7 @@ DiredButton(Widget w GCC_UNUSED, XEvent * event, /* must be XButtonEvent */ String * params GCC_UNUSED, /* selections */ - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen = &term->screen; Char Line[6]; @@ -848,7 +848,7 @@ ReadLineButton(Widget w GCC_UNUSED, XEvent * event, /* must be XButtonEvent */ String * params GCC_UNUSED, /* selections */ - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen = &term->screen; Char Line[6]; @@ -908,7 +908,7 @@ ViButton(Widget w GCC_UNUSED, XEvent * event, /* must be XButtonEvent */ String * params GCC_UNUSED, /* selections */ - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen = &term->screen; int pty = screen->respond; @@ -943,7 +943,7 @@ HandleSelectExtend(Widget w, XEvent * event, /* must be XMotionEvent */ String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen; int row, col; @@ -967,8 +967,9 @@ case NORMAL: /* will get here if send_mouse_pos != MOUSE_OFF */ if (screen->send_mouse_pos == BTN_EVENT_MOUSE - || screen->send_mouse_pos == ANY_EVENT_MOUSE) - SendMousePosition(w, event); + || screen->send_mouse_pos == ANY_EVENT_MOUSE) { + (void) SendMousePosition(w, event); + } break; } } @@ -977,7 +978,7 @@ do_select_end(Widget w, XEvent * event, /* must be XButtonEvent */ String * params, /* selections */ - Cardinal * num_params, + Cardinal *num_params, Bool use_cursor_loc) { #if OPT_READLINE @@ -985,8 +986,9 @@ TScreen *screen = &term->screen; #endif - if (!IsXtermWidget(w)) + if (!IsXtermWidget(w)) { return; + } ((XtermWidget) w)->screen.selection_time = event->xbutton.time; switch (eventMode) { @@ -1018,7 +1020,7 @@ HandleSelectEnd(Widget w, XEvent * event, /* must be XButtonEvent */ String * params, /* selections */ - Cardinal * num_params) + Cardinal *num_params) { do_select_end(w, event, params, num_params, False); } @@ -1027,7 +1029,7 @@ HandleKeyboardSelectEnd(Widget w, XEvent * event, /* must be XButtonEvent */ String * params, /* selections */ - Cardinal * num_params) + Cardinal *num_params) { do_select_end(w, event, params, num_params, True); } @@ -1142,22 +1144,15 @@ return eightBitSelectionTargets; } -static void -_GetSelection(Widget w, - Time ev_time, - String * params, /* selections in precedence order */ - Cardinal num_params, - Atom * targets) +/* + * Lookup the cut-buffer number, which will be in the range 0-7. + * If it is not a cut-buffer, it is the primary selection (-1). + */ +static int +CutBuffer(int code) { - Atom selection; int cutbuffer; - Atom target; - - if (!IsXtermWidget(w)) - return; - - XmuInternStrings(XtDisplay(w), params, (Cardinal) 1, &selection); - switch (selection) { + switch (code) { case XA_CUT_BUFFER0: cutbuffer = 0; break; @@ -1184,7 +1179,37 @@ break; default: cutbuffer = -1; + break; } + return cutbuffer; +} + +static void +_GetSelection(Widget w, + Time ev_time, + String * params, /* selections in precedence order */ + Cardinal num_params, + Atom * targets) +{ + Atom selection; + int cutbuffer; + Atom target; + + if (!IsXtermWidget(w)) + return; + +#if OPT_TRACE + TRACE(("_GetSelection\n")); + if (num_params > 0) { + Cardinal n; + for (n = 0; n < num_params; ++n) { + TRACE(("param[%d]:%s\n", n, params[n])); + } + } +#endif + + XmuInternStrings(XtDisplay(w), params, (Cardinal) 1, &selection); + cutbuffer = CutBuffer(selection); TRACE(("Cutbuffer: %d, target: %lu\n", cutbuffer, targets ? (unsigned long) targets[0] : 0)); if (cutbuffer >= 0) { @@ -1192,7 +1217,10 @@ unsigned long nbytes; int fmt8 = 8; Atom type = XA_STRING; - char *line = XFetchBuffer(XtDisplay(w), &inbytes, cutbuffer); + char *line; + + /* 'line' is freed in SelectionReceived */ + line = XFetchBuffer(XtDisplay(w), &inbytes, cutbuffer); nbytes = (unsigned long) inbytes; if (nbytes > 0) SelectionReceived(w, NULL, &selection, &type, (XtPointer) line, @@ -1219,13 +1247,17 @@ } if (num_params) { + /* 'list' is freed in SelectionReceived */ list = XtNew(struct _SelectionList); - list->params = params; - list->count = num_params; - list->targets = targets; - list->time = ev_time; - } else + if (list != 0) { + list->params = params; + list->count = num_params; + list->targets = targets; + list->time = ev_time; + } + } else { list = NULL; + } XtGetSelectionValue(w, selection, target, @@ -1244,7 +1276,7 @@ name = XGetAtomName(dpy, type); - Trace("Getting %s (%ld)\n", XGetAtomName(dpy, type), (long int) type); + Trace("Getting %s (%ld)\n", name, (long int) type); for (cp = line; cp < line + len; cp++) Trace("%c\n", *cp); } @@ -1446,7 +1478,7 @@ HandleInsertSelection(Widget w, XEvent * event, /* assumed to be XButtonEvent* */ String * params, /* selections in precedence order */ - Cardinal * num_params) + Cardinal *num_params) { #if OPT_READLINE int ldelta; @@ -1513,7 +1545,7 @@ HandleSelectStart(Widget w, XEvent * event, /* must be XButtonEvent* */ String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen; int startrow, startcol; @@ -1538,7 +1570,7 @@ HandleKeyboardSelectStart(Widget w, XEvent * event, /* must be XButtonEvent* */ String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { TScreen *screen; @@ -1619,7 +1651,6 @@ endECol = startcol; } ComputeSelect(startERow, startECol, endERow, endECol, False); - } static void @@ -1678,7 +1709,7 @@ HandleSelectSet(Widget w, XEvent * event, String * params, - Cardinal * num_params) + Cardinal *num_params) { SelectSet(w, event, params, *num_params); } @@ -1690,12 +1721,14 @@ String * params, Cardinal num_params) { + TRACE(("SelectSet\n")); /* Only do select stuff if non-null select */ if (startSRow != endSRow || startSCol != endSCol) { SaltTextAway(startSRow, startSCol, endSRow, endSCol, params, num_params); - } else + } else { DisownSelection(term); + } } #define Abs(x) ((x) < 0 ? -(x) : (x)) @@ -1705,7 +1738,7 @@ do_start_extend(Widget w, XEvent * event, /* must be XButtonEvent* */ String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED, + Cardinal *num_params GCC_UNUSED, Bool use_cursor_loc) { TScreen *screen; @@ -1815,7 +1848,7 @@ HandleStartExtend(Widget w, XEvent * event, /* must be XButtonEvent* */ String * params, /* unused */ - Cardinal * num_params) /* unused */ + Cardinal *num_params) /* unused */ { do_start_extend(w, event, params, num_params, False); } @@ -1824,13 +1857,13 @@ HandleKeyboardStartExtend(Widget w, XEvent * event, /* must be XButtonEvent* */ String * params, /* unused */ - Cardinal * num_params) /* unused */ + Cardinal *num_params) /* unused */ { do_start_extend(w, event, params, num_params, True); } void -ScrollSelection(TScreen * screen, int amount) +ScrollSelection(TScreen * screen, int amount, Bool always) { int minrow = -screen->savedlines - screen->topline; int maxrow = screen->max_row - screen->topline; @@ -1854,8 +1887,29 @@ scroll_update_one(rawRow, rawCol); - scroll_update_one(screen->startHRow, screen->startHCol); - scroll_update_one(screen->endHRow, screen->endHCol); + /* + * If we are told to scroll the selection but it lies outside the scrolling + * margins, then that could cause the selection to move (bad). It is not + * simple to fix, because this function is called both for the scrollbar + * actions as well as application scrolling. The 'always' flag is set in + * the former case. The rest of the logic handles the latter. + */ + if (ScrnHaveSelection(screen)) { + int adjust; + + adjust = screen->startHRow + screen->topline; + if (always + || !ScrnHaveLineMargins(screen) + || ScrnIsLineInMargins(screen, adjust)) { + scroll_update_one(screen->startHRow, screen->startHCol); + } + adjust = screen->endHRow + screen->topline; + if (always + || !ScrnHaveLineMargins(screen) + || ScrnIsLineInMargins(screen, adjust)) { + scroll_update_one(screen->endHRow, screen->endHCol); + } + } screen->startHCoord = Coordinate(screen->startHRow, screen->startHCol); screen->endHCoord = Coordinate(screen->endHRow, screen->endHCol); @@ -2230,7 +2284,7 @@ } /* check boundaries */ - ScrollSelection(screen, 0); + ScrollSelection(screen, 0, False); TrackText(startSRow, startSCol, endSRow, endSCol); return; @@ -2297,6 +2351,8 @@ TScreen *screen = &term->screen; int i; + TRACE(("ReHiliteText from %d.%d to %d.%d\n", frow, fcol, trow, tcol)); + if (frow < 0) frow = fcol = 0; else if (frow > screen->max_row) @@ -2397,14 +2453,14 @@ } *lp = '\0'; /* make sure we have end marked */ - TRACE(("Salted TEXT:%.*s\n", lp - line, line)); + TRACE(("Salted TEXT:%d:%.*s\n", lp - line, lp - line, line)); screen->selection_length = (lp - line); _OwnSelection(term, params, num_params); } static Boolean _ConvertSelectionHelper(Widget w, - Atom * type, XtPointer * value, + Atom * type, XtPointer *value, unsigned long *length, int *format, int (*conversion_function) (Display *, char **, int, @@ -2437,7 +2493,7 @@ Atom * selection, Atom * target, Atom * type, - XtPointer * value, + XtPointer *value, unsigned long *length, int *format) { @@ -2563,9 +2619,9 @@ } else if (*target == XA_LENGTH(d)) { /* This value is wrong if we have UTF-8 text */ *value = XtMalloc(4); - if (sizeof(long) == 4) - *(long *) *value = screen->selection_length; - else { + if (sizeof(long) == 4) { + *(long *) *value = screen->selection_length; + } else { long temp = screen->selection_length; memcpy((char *) *value, ((char *) &temp) + sizeof(long) - 4, 4); } @@ -2599,15 +2655,7 @@ i < screen->selection_count; i++, atomP++) { if (*selection == *atomP) *atomP = (Atom) 0; - switch (*atomP) { - case XA_CUT_BUFFER0: - case XA_CUT_BUFFER1: - case XA_CUT_BUFFER2: - case XA_CUT_BUFFER3: - case XA_CUT_BUFFER4: - case XA_CUT_BUFFER5: - case XA_CUT_BUFFER6: - case XA_CUT_BUFFER7: + if (CutBuffer(*atomP) >= 0) { *atomP = (Atom) 0; } } @@ -2658,35 +2706,7 @@ } XmuInternStrings(XtDisplay((Widget) termw), selections, count, atoms); for (i = 0; i < count; i++) { - int cutbuffer; - switch (atoms[i]) { - case XA_CUT_BUFFER0: - cutbuffer = 0; - break; - case XA_CUT_BUFFER1: - cutbuffer = 1; - break; - case XA_CUT_BUFFER2: - cutbuffer = 2; - break; - case XA_CUT_BUFFER3: - cutbuffer = 3; - break; - case XA_CUT_BUFFER4: - cutbuffer = 4; - break; - case XA_CUT_BUFFER5: - cutbuffer = 5; - break; - case XA_CUT_BUFFER6: - cutbuffer = 6; - break; - case XA_CUT_BUFFER7: - cutbuffer = 7; - break; - default: - cutbuffer = -1; - } + int cutbuffer = CutBuffer(atoms[i]); if (cutbuffer >= 0) { if (termw->screen.selection_length > 4 * XMaxRequestSize(XtDisplay((Widget) termw)) - 32) { @@ -2721,50 +2741,52 @@ TrackText(0, 0, 0, 0); } +static void +ResetSelectionState(TScreen * screen) +{ + screen->selection_count = 0; + screen->startHRow = screen->startHCol = 0; + screen->endHRow = screen->endHCol = 0; +} + void DisownSelection(XtermWidget termw) { - Atom *atoms = termw->screen.selection_atoms; - Cardinal count = termw->screen.selection_count; + TScreen *screen = &(termw->screen); + Atom *atoms = screen->selection_atoms; + Cardinal count = screen->selection_count; Cardinal i; + TRACE(("DisownSelection count %d, start %d.%d, end %d.%d\n", + count, + screen->startHRow, + screen->startHCol, + screen->endHRow, + screen->endHCol)); + for (i = 0; i < count; i++) { - int cutbuffer; - switch (atoms[i]) { - case XA_CUT_BUFFER0: - cutbuffer = 0; - break; - case XA_CUT_BUFFER1: - cutbuffer = 1; - break; - case XA_CUT_BUFFER2: - cutbuffer = 2; - break; - case XA_CUT_BUFFER3: - cutbuffer = 3; - break; - case XA_CUT_BUFFER4: - cutbuffer = 4; - break; - case XA_CUT_BUFFER5: - cutbuffer = 5; - break; - case XA_CUT_BUFFER6: - cutbuffer = 6; - break; - case XA_CUT_BUFFER7: - cutbuffer = 7; - break; - default: - cutbuffer = -1; - } - if (cutbuffer < 0) + int cutbuffer = CutBuffer(atoms[i]); + if (cutbuffer < 0) { XtDisownSelection((Widget) termw, atoms[i], - termw->screen.selection_time); + screen->selection_time); + } + } + /* + * If none of the callbacks via XtDisownSelection() reset highlighting + * do it now. + */ + if (ScrnHaveSelection(screen)) { + /* save data which will be reset */ + int start_row = screen->startHRow; + int start_col = screen->startHCol; + int end_row = screen->endHRow; + int end_col = screen->endHCol; + + ResetSelectionState(screen); + ReHiliteText(start_row, start_col, end_row, end_col); + } else { + ResetSelectionState(screen); } - termw->screen.selection_count = 0; - termw->screen.startHRow = termw->screen.startHCol = 0; - termw->screen.endHRow = termw->screen.endHCol = 0; } /* returns number of chars in line from scol to ecol out */ @@ -2832,7 +2854,7 @@ } previous = c; if (screen->utf8_mode) { - lp = convertToUTF8(lp, c); + lp = convertToUTF8(lp, (c != 0) ? c : ' '); if (c_1) { lp = convertToUTF8(lp, c_1); if (c_2) @@ -2981,7 +3003,7 @@ HandleGINInput(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * param_list, - Cardinal * nparamsp) + Cardinal *nparamsp) { if (term->screen.TekGIN && *nparamsp == 1) { int c = param_list[0][0]; @@ -3010,7 +3032,7 @@ HandleSecure(Widget w GCC_UNUSED, XEvent * event, /* unused */ String * params GCC_UNUSED, /* [0] = volume */ - Cardinal * param_count GCC_UNUSED) /* 0 or 1 */ + Cardinal *param_count GCC_UNUSED) /* 0 or 1 */ { Time ev_time = CurrentTime; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/charclass.c x11r682/xc/programs/xterm/charclass.c --- xc/programs/xterm/charclass.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/charclass.c 2005-01-12 22:45:09.000000000 +0100 @@ -20,14 +20,14 @@ * but merging in new intervals is significantly more hassle and * not worth the effort here. */ -/* $XFree86: xc/programs/xterm/charclass.c,v 1.3 2002/04/28 19:04:19 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/charclass.c,v 1.4 2004/12/01 01:27:46 dickey Exp $ */ #include #include #if OPT_WIDE_CHARS -struct classentry { +static struct classentry { int class; int first; int last; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/charproc.c x11r682/xc/programs/xterm/charproc.c --- xc/programs/xterm/charproc.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/charproc.c 2005-01-12 22:45:09.000000000 +0100 @@ -1,10 +1,10 @@ -/* $XTermId: charproc.c,v 1.498 2004/08/08 22:36:13 tom Exp $ */ +/* $XTermId: charproc.c,v 1.533 2004/12/01 01:27:46 tom Exp $ */ /* * $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $ */ -/* $XFree86: xc/programs/xterm/charproc.c,v 3.165 2004/08/08 22:36:13 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/charproc.c,v 3.166 2004/12/01 01:27:46 dickey Exp $ */ /* @@ -146,8 +146,9 @@ static void SwitchBufs(TScreen * screen); static void ToAlternate(TScreen * screen); static void VTallocbuf(void); -static void WriteText(TScreen * screen, PAIRED_CHARS(Char * str, Char * - str2), Cardinal len); +static void WriteText(TScreen * screen, + PAIRED_CHARS(Char * str, Char * str2), + Cardinal len); static void ansi_modes(XtermWidget termw, void (*func) (unsigned *p, unsigned mask)); static void bitclr(unsigned *p, unsigned mask); @@ -181,11 +182,6 @@ static ANSI reply; static int param[NPARAM]; -#ifdef UNUSED -static unsigned long ctotal; -static unsigned long ntotal; -#endif - static jmp_buf vtjmpbuf; /* event handlers */ @@ -270,7 +266,7 @@ @Num_Lock Ctrl :scroll-forw(1,halfpage,m) \n\ :scroll-forw(5,line,m) \n\ :select-end(PRIMARY, CUT_BUFFER0) \n\ - :bell(0) \ + :ignore() \ "; /* PROCURA added "Meta :clear-saved-lines()" */ /* *INDENT-OFF* */ static XtActionsRec actionsList[] = { @@ -387,6 +383,9 @@ { "tek-reset", HandleTekReset }, { "tek-copy", HandleTekCopy }, #endif +#if OPT_TOOLBAR + { "set-toolbar", HandleToolbar }, +#endif #if OPT_WIDE_CHARS { "set-utf8-mode", HandleUTF8Mode }, #endif @@ -504,6 +503,9 @@ #if OPT_BLINK_CURS Bres(XtNcursorBlink, XtCCursorBlink, screen.cursor_blink, FALSE), +#endif + +#if OPT_BLINK_TEXT Bres(XtNshowBlinkAsBold, XtCCursorBlink, screen.blink_as_bold, DEFBLINKASBOLD), #endif @@ -616,10 +618,9 @@ #endif #if OPT_TOOLBAR - {XtNmenuBar, XtCMenuBar, XtRWidget, sizeof(Widget), - XtOffsetOf(XtermWidgetRec, screen.fullVwin.menu_bar), - XtRWidget, (XtPointer) 0}, - Ires(XtNmenuHeight, XtCMenuHeight, screen.fullVwin.menu_height, 25), + Wres(XtNmenuBar, XtCMenuBar, VT100_TB_INFO(menu_bar), 0), + Ires(XtNmenuHeight, XtCMenuHeight, VT100_TB_INFO(menu_height), 25), + Bres(XtNtoolBar, XtCToolBar, screen.toolbars, TRUE), #endif #if OPT_WIDE_CHARS @@ -652,7 +653,7 @@ #endif #if OPT_RENDERFONT - Ires(XtNfaceSize, XtCFaceSize, misc.face_size, DEFFACESIZE), + Dres(XtNfaceSize, XtCFaceSize, misc.face_size, DEFFACESIZE), Sres(XtNfaceName, XtCFaceName, misc.face_name, DEFFACENAME), Sres(XtNfaceNameDoublesize, XtCFaceNameDoublesize, misc.face_wide_name, DEFFACENAME), Bres(XtNrenderFont, XtCRenderFont, misc.render_font, TRUE), @@ -660,12 +661,12 @@ }; static Boolean VTSetValues(Widget cur, Widget request, Widget new_arg, - ArgList args, Cardinal * num_args); + ArgList args, Cardinal *num_args); static void VTClassInit(void); static void VTDestroy(Widget w); static void VTExpose(Widget w, XEvent * event, Region region); static void VTInitialize(Widget wrequest, Widget new_arg, ArgList args, - Cardinal * num_args); + Cardinal *num_args); static void VTRealize(Widget w, XtValueMask * valuemask, XSetWindowAttributes * values); static void VTResize(Widget w); @@ -709,7 +710,7 @@ VTExpose, /* expose */ VTSetValues, /* set_values */ NULL, /* set_values_hook */ - NULL, /* set_values_almost */ + XtInheritSetValuesAlmost, /* set_values_almost */ NULL, /* get_values_hook */ NULL, /* accept_focus */ XtVersion, /* version */ @@ -791,7 +792,6 @@ register TScreen *screen = &term->screen; Pixel fg; - /* FIXME HideCursor(); */ if (color >= 0) { term->flags |= FG_COLOR; } else { @@ -1008,10 +1008,26 @@ print_used = 0; \ } \ -extern int last_written_col, last_written_row; +struct ParseState { +#if OPT_VT52_MODE + Bool vt52_cup; +#endif + Const PARSE_T *groundtable; + Const PARSE_T *parsestate; + int scstype; + Bool private_function; /* distinguish private-mode from standard */ + int string_mode; /* nonzero iff we're processing a string */ + int lastchar; /* positive iff we had a graphic character */ + int nextstate; +#if OPT_WIDE_CHARS + int last_was_wide; +#endif +}; + +static struct ParseState myState; static void -VTparse(void) +doparsing(unsigned c, struct ParseState *sp) { /* Buffer for processing printable text */ static IChar *print_area; @@ -1021,46 +1037,17 @@ static Char *string_area; static size_t string_size, string_used; -#if OPT_VT52_MODE - static Bool vt52_cup = FALSE; -#endif - - Const PARSE_T *groundtable = ansi_table; TScreen *screen = &term->screen; - Const PARSE_T *parsestate; - unsigned int c; - Char *cp; - int row, col, top, bot, scstype, count; - Bool private_function; /* distinguish private-mode from standard */ - int string_mode; /* nonzero iff we're processing a string */ - int lastchar; /* positive iff we had a graphic character */ - int nextstate; + int row; + int col; + int top; + int bot; + int count; int laststate; -#if OPT_WIDE_CHARS - int last_was_wide; -#endif - - /* We longjmp back to this point in VTReset() */ - (void) setjmp(vtjmpbuf); -#if OPT_VT52_MODE - groundtable = screen->vtXX_level ? ansi_table : vt52_table; -#else - groundtable = ansi_table; -#endif - parsestate = groundtable; - scstype = 0; - private_function = False; - string_mode = 0; - lastchar = -1; /* not a legal IChar */ - nextstate = -1; /* not a legal state */ -#if OPT_WIDE_CHARS - last_was_wide = 0; -#endif - - for (;;) { - int thischar = -1; - c = doinput(); + int thischar = -1; + XTermRect myRect; + do { #if OPT_WIDE_CHARS if (screen->wide_chars && my_wcwidth(c) == 0) { @@ -1068,20 +1055,24 @@ WriteNow(); - prev = getXtermCell(screen, last_written_row, last_written_col); + prev = getXtermCell(screen, + screen->last_written_row, + screen->last_written_col); precomposed = do_precomposition(prev, c); if (precomposed != -1) { - putXtermCell(screen, last_written_row, last_written_col, precomposed); + putXtermCell(screen, + screen->last_written_row, + screen->last_written_col, precomposed); } else { addXtermCombining(screen, - last_written_row, - last_written_col, c); + screen->last_written_row, + screen->last_written_col, c); } if (!screen->scroll_amt) - ScrnRefresh(screen, - last_written_row, - last_written_col, 1, 1, 1); + ScrnUpdate(screen, + screen->last_written_row, + screen->last_written_col, 1, 1, 1); continue; } #endif @@ -1098,17 +1089,18 @@ * that denotes the type of sequence. */ #if OPT_VT52_MODE - if (vt52_cup) { - param[nparam++] = (c & 0x7f) - 32; + if (sp->vt52_cup) { + if (nparam < NPARAM) + param[nparam++] = (c & 0x7f) - 32; if (nparam < 2) continue; - vt52_cup = FALSE; + sp->vt52_cup = FALSE; if ((row = param[0]) < 0) row = 0; if ((col = param[1]) < 0) col = 0; CursorSet(screen, row, col, term->flags); - parsestate = vt52_table; + sp->parsestate = vt52_table; param[0] = 0; param[1] = 0; continue; @@ -1120,23 +1112,23 @@ * wide characters, we handle them by treating them the same as * printing characters. */ - laststate = nextstate; + laststate = sp->nextstate; #if OPT_WIDE_CHARS if (c > 255) { - if (parsestate == groundtable) { - nextstate = CASE_PRINT; - } else if (parsestate == sos_table) { + if (sp->parsestate == sp->groundtable) { + sp->nextstate = CASE_PRINT; + } else if (sp->parsestate == sos_table) { c &= 0xffff; if (c > 255) { TRACE(("Found code > 255 while in SOS state: %04X\n", c)); c = '?'; } } else { - nextstate = CASE_GROUND_STATE; + sp->nextstate = CASE_GROUND_STATE; } } else #endif - nextstate = parsestate[E2A(c)]; + sp->nextstate = sp->parsestate[E2A(c)]; #if OPT_BROKEN_OSC /* @@ -1147,7 +1139,7 @@ * in emulating bad code. */ if (screen->brokenLinuxOSC - && parsestate == sos_table) { + && sp->parsestate == sos_table) { if (string_used) { switch (string_area[0]) { case 'P': @@ -1155,8 +1147,8 @@ break; /* FALLTHRU */ case 'R': - parsestate = groundtable; - nextstate = parsestate[E2A(c)]; + sp->parsestate = sp->groundtable; + sp->nextstate = sp->parsestate[E2A(c)]; TRACE(("Reset to ground state (brokenLinuxOSC)\n")); break; } @@ -1172,7 +1164,7 @@ * and emulate the old behavior. */ if (screen->brokenStringTerm - && parsestate == sos_table + && sp->parsestate == sos_table && c < 32) { switch (c) { case 5: /* FALLTHRU */ @@ -1185,8 +1177,8 @@ case 14: /* FALLTHRU */ case 15: /* FALLTHRU */ case 24: - parsestate = groundtable; - nextstate = parsestate[E2A(c)]; + sp->parsestate = sp->groundtable; + sp->nextstate = sp->parsestate[E2A(c)]; TRACE(("Reset to ground state (brokenStringTerm)\n")); break; } @@ -1201,9 +1193,9 @@ */ if (screen->c1_printable && (c >= 128 && c < 160)) { - nextstate = (parsestate == esc_table - ? CASE_ESC_IGNORE - : parsestate[E2A(160)]); + sp->nextstate = (sp->parsestate == esc_table + ? CASE_ESC_IGNORE + : sp->parsestate[E2A(160)]); } #endif @@ -1221,14 +1213,14 @@ #endif if (screen->wide_chars && (c >= 128 && c < 160)) { - nextstate = CASE_IGNORE; + sp->nextstate = CASE_IGNORE; } /* * If this character is a different width than the last one, put the * previous text into the buffer and draw it now. */ - if (iswide(c) != last_was_wide) { + if (iswide(c) != sp->last_was_wide) { WriteNow(); } #endif @@ -1237,11 +1229,11 @@ * Accumulate string for printable text. This may be 8/16-bit * characters. */ - if (nextstate == CASE_PRINT) { + if (sp->nextstate == CASE_PRINT) { SafeAlloc(IChar, print_area, print_used, print_size); if (new_string == 0) { fprintf(stderr, - "Cannot allocate %d bytes for printable text\n", + "Cannot allocate %u bytes for printable text\n", new_length); continue; } @@ -1256,16 +1248,16 @@ #endif print_area = new_string; print_size = new_length; - print_area[print_used++] = lastchar = thischar = c; + print_area[print_used++] = sp->lastchar = thischar = c; #if OPT_WIDE_CHARS - last_was_wide = iswide(c); + sp->last_was_wide = iswide(c); #endif if (morePtyData(screen, &VTbuffer)) { continue; } } - if (nextstate == CASE_PRINT + if (sp->nextstate == CASE_PRINT || (laststate == CASE_PRINT && print_used)) { WriteNow(); } @@ -1274,12 +1266,12 @@ * Accumulate string for APC, DCS, PM, OSC, SOS controls * This should always be 8-bit characters. */ - if (parsestate == sos_table) { + if (sp->parsestate == sos_table) { SafeAlloc(Char, string_area, string_used, string_size); if (new_string == 0) { fprintf(stderr, - "Cannot allocate %d bytes for string mode %d\n", - new_length, string_mode); + "Cannot allocate %u bytes for string mode %d\n", + new_length, sp->string_mode); continue; } #if OPT_WIDE_CHARS @@ -1289,46 +1281,48 @@ * string. */ if ((c & 0xffff) > 255) { - nextstate = CASE_PRINT; + sp->nextstate = CASE_PRINT; c = '?'; } #endif string_area = new_string; string_size = new_length; string_area[string_used++] = c; - } else if (parsestate != esc_table) { + } else if (sp->parsestate != esc_table) { /* if we were accumulating, we're not any more */ - string_mode = 0; + sp->string_mode = 0; string_used = 0; } - TRACE(("parse %04X -> %d\n", c, nextstate)); + TRACE(("parse %04X -> %d\n", c, sp->nextstate)); - switch (nextstate) { + switch (sp->nextstate) { case CASE_PRINT: - /* printable characters (see above) */ + TRACE(("CASE_PRINT - printable characters\n")); break; case CASE_GROUND_STATE: - /* exit ignore mode */ - parsestate = groundtable; + TRACE(("CASE_GROUND_STATE - exit ignore mode\n")); + sp->parsestate = sp->groundtable; break; case CASE_IGNORE: - /* Ignore character */ + TRACE(("CASE_IGNORE - Ignore character\n")); break; case CASE_ENQ: + TRACE(("CASE_ENQ - answerback\n")); for (count = 0; screen->answer_back[count] != 0; count++) unparseputc(screen->answer_back[count], screen->respond); break; case CASE_BELL: - if (string_mode == OSC) { + TRACE(("CASE_BELL - bell\n")); + if (sp->string_mode == OSC) { if (string_used) string_area[--string_used] = '\0'; do_osc(string_area, string_used, c); - parsestate = groundtable; + sp->parsestate = sp->groundtable; } else { /* bell */ Bell(XkbBI_TerminalBell, 0); @@ -1336,32 +1330,33 @@ break; case CASE_BS: - /* backspace */ + TRACE(("CASE_BS - backspace\n")); CursorBack(screen, 1); break; case CASE_CR: - /* carriage return */ + /* CR */ CarriageReturn(screen); break; case CASE_ESC: - /* escape */ if_OPT_VT52_MODE(screen, { - parsestate = vt52_esc_table; + sp->parsestate = vt52_esc_table; break; }); - parsestate = esc_table; + sp->parsestate = esc_table; break; #if OPT_VT52_MODE case CASE_VT52_CUP: - vt52_cup = TRUE; + TRACE(("CASE_VT52_CUP - VT52 cursor addressing\n")); + sp->vt52_cup = TRUE; nparam = 0; break; case CASE_VT52_IGNORE: - parsestate = vt52_ignore_table; + TRACE(("CASE_VT52_IGNORE - VT52 ignore-character\n")); + sp->parsestate = vt52_ignore_table; break; #endif @@ -1382,7 +1377,7 @@ count = 1; while ((count-- > 0) && (TabToPrevStop())) ; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CHT: @@ -1391,7 +1386,7 @@ count = 1; while ((count-- > 0) && (TabToNextStop())) ; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_TAB: @@ -1402,64 +1397,64 @@ case CASE_SI: screen->curgl = 0; if_OPT_VT52_MODE(screen, { - parsestate = groundtable; + sp->parsestate = sp->groundtable; }); break; case CASE_SO: screen->curgl = 1; if_OPT_VT52_MODE(screen, { - parsestate = groundtable; + sp->parsestate = sp->groundtable; }); break; case CASE_DECDHL: xterm_DECDHL(c == '3'); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSWL: xterm_DECSWL(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECDWL: xterm_DECDWL(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SCR_STATE: /* enter scr state */ - parsestate = scrtable; + sp->parsestate = scrtable; break; case CASE_SCS0_STATE: /* enter scs state 0 */ - scstype = 0; - parsestate = scstable; + sp->scstype = 0; + sp->parsestate = scstable; break; case CASE_SCS1_STATE: /* enter scs state 1 */ - scstype = 1; - parsestate = scstable; + sp->scstype = 1; + sp->parsestate = scstable; break; case CASE_SCS2_STATE: /* enter scs state 2 */ - scstype = 2; - parsestate = scstable; + sp->scstype = 2; + sp->parsestate = scstable; break; case CASE_SCS3_STATE: /* enter scs state 3 */ - scstype = 3; - parsestate = scstable; + sp->scstype = 3; + sp->parsestate = scstable; break; case CASE_ESC_IGNORE: /* unknown escape sequence */ - parsestate = eigtable; + sp->parsestate = eigtable; break; case CASE_ESC_DIGIT: @@ -1469,75 +1464,75 @@ param[nparam - 1] = 10 * row + (c - '0'); if (param[nparam - 1] > 65535) param[nparam - 1] = 65535; - if (parsestate == csi_table) - parsestate = csi2_table; + if (sp->parsestate == csi_table) + sp->parsestate = csi2_table; break; case CASE_ESC_SEMI: /* semicolon in csi or dec mode */ if (nparam < NPARAM) param[nparam++] = DEFAULT; - if (parsestate == csi_table) - parsestate = csi2_table; + if (sp->parsestate == csi_table) + sp->parsestate = csi2_table; break; case CASE_DEC_STATE: /* enter dec mode */ - parsestate = dec_table; + sp->parsestate = dec_table; break; case CASE_DEC2_STATE: /* enter dec2 mode */ - parsestate = dec2_table; + sp->parsestate = dec2_table; break; case CASE_DEC3_STATE: /* enter dec3 mode */ - parsestate = dec3_table; + sp->parsestate = dec3_table; break; case CASE_ICH: - /* ICH */ + TRACE(("CASE_ICH - insert char\n")); if ((row = param[0]) < 1) row = 1; InsertChar(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CUU: - /* CUU */ + TRACE(("CASE_CUU - cursor up\n")); if ((row = param[0]) < 1) row = 1; CursorUp(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CUD: - /* CUD */ + TRACE(("CASE_CUD - cursor down\n")); if ((row = param[0]) < 1) row = 1; CursorDown(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CUF: - /* CUF */ + TRACE(("CASE_CUF - cursor forward\n")); if ((col = param[0]) < 1) col = 1; CursorForward(screen, col); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CUB: - /* CUB */ + TRACE(("CASE_CUB - cursor backward\n")); if ((col = param[0]) < 1) col = 1; CursorBack(screen, col); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CUP: - /* CUP | HVP */ + TRACE(("CASE_CUP - cursor position\n")); if_OPT_XMC_GLITCH(screen, { Jump_XMC(screen); }); @@ -1546,78 +1541,82 @@ if (nparam < 2 || (col = param[1]) < 1) col = 1; CursorSet(screen, row - 1, col - 1, term->flags); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_VPA: + TRACE(("CASE_VPA - vertical position\n")); if ((row = param[0]) < 1) row = 1; CursorSet(screen, row - 1, screen->cur_col, term->flags); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_HPA: - /* HPA | CHA */ + TRACE(("CASE_HPA - horizontal position\n")); if ((col = param[0]) < 1) col = 1; CursorSet(screen, screen->cur_row, col - 1, term->flags); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_HP_BUGGY_LL: + TRACE(("CASE_HP_BUGGY_LL\n")); /* Some HP-UX applications have the bug that they assume ESC F goes to the lower left corner of the screen, regardless of what terminfo says. */ if (screen->hp_ll_bc) CursorSet(screen, screen->max_row, 0, term->flags); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_ED: - /* ED */ + TRACE(("CASE_ED - erase display\n")); do_erase_display(screen, param[0], OFF_PROTECT); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_EL: - /* EL */ + TRACE(("CASE_EL - erase line\n")); do_erase_line(screen, param[0], OFF_PROTECT); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_ECH: + TRACE(("CASE_ECH - erase char\n")); /* ECH */ ClearRight(screen, param[0] < 1 ? 1 : param[0]); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_IL: - /* IL */ + TRACE(("CASE_IL - insert line\n")); if ((row = param[0]) < 1) row = 1; InsertLine(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DL: - /* DL */ + TRACE(("CASE_DL - delete line\n")); if ((row = param[0]) < 1) row = 1; DeleteLine(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DCH: - /* DCH */ + TRACE(("CASE_DCH - delete char\n")); if ((row = param[0]) < 1) row = 1; DeleteChar(screen, row); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_TRACK_MOUSE: if (screen->send_mouse_pos == VT200_HIGHLIGHT_MOUSE || nparam > 1) { + TRACE(("CASE_TRACK_MOUSE\n")); /* Track mouse as long as in window and between * specified rows */ @@ -1625,27 +1624,29 @@ param[2] - 1, param[1] - 1, param[3] - 1, param[4] - 2); } else { + TRACE(("CASE_SD - scroll down\n")); /* SD */ if ((count = param[0]) < 1) count = 1; RevScroll(screen, count); do_xevents(); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECID: + TRACE(("CASE_DECID\n")); if_OPT_VT52_MODE(screen, { unparseputc(ESC, screen->respond); unparseputc('/', screen->respond); unparseputc('Z', screen->respond); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; }); - param[0] = -1; /* Default ID parameter */ + param[0] = DEFAULT; /* Default ID parameter */ /* FALLTHRU */ case CASE_DA1: - /* DA1 */ + TRACE(("CASE_DA1\n")); if (param[0] <= 1) { /* less than means DEFAULT */ count = 0; reply.a_type = CSI; @@ -1695,11 +1696,11 @@ reply.a_final = 'c'; unparseseq(&reply, screen->respond); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DA2: - /* DA2 */ + TRACE(("CASE_DA2\n")); if (param[0] <= 0) { /* less than means DEFAULT */ count = 0; reply.a_type = CSI; @@ -1716,11 +1717,11 @@ reply.a_final = 'c'; unparseseq(&reply, screen->respond); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECRPTUI: - /* DECRPTUI */ + TRACE(("CASE_DECRPTUI\n")); if ((screen->terminal_id >= 400) && (param[0] <= 0)) { /* less than means DEFAULT */ unparseputc1(DCS, screen->respond); @@ -1729,32 +1730,31 @@ unparseputc('0', screen->respond); unparseputc1(ST, screen->respond); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_TBC: - /* TBC */ + TRACE(("CASE_TBC - tab clear\n")); if ((row = param[0]) <= 0) /* less than means default */ TabClear(term->tabs, screen->cur_col); else if (row == 3) TabZonk(term->tabs); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SET: - /* SET */ + TRACE(("CASE_SET - set mode\n")); ansi_modes(term, bitset); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_RST: - /* RST */ + TRACE(("CASE_RST - reset mode\n")); ansi_modes(term, bitclr); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SGR: - /* SGR */ for (row = 0; row < nparam; ++row) { if_OPT_XMC_GLITCH(screen, { Mark_XMC(screen, param[row]); @@ -1942,18 +1942,19 @@ break; } } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; /* DSR (except for the '?') is a superset of CPR */ case CASE_DSR: - private_function = True; + sp->private_function = True; /* FALLTHRU */ case CASE_CPR: + TRACE(("CASE_CPR - cursor position\n")); count = 0; reply.a_type = CSI; - reply.a_pintro = private_function ? '?' : 0; + reply.a_pintro = sp->private_function ? '?' : 0; reply.a_inters = 0; reply.a_final = 'n'; @@ -1999,33 +2000,38 @@ if ((reply.a_nparam = count) != 0) unparseseq(&reply, screen->respond); - parsestate = groundtable; - private_function = False; + sp->parsestate = sp->groundtable; + sp->private_function = False; break; case CASE_MC: + TRACE(("CASE_MC - media control\n")); xtermMediaControl(param[0], FALSE); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DEC_MC: + TRACE(("CASE_DEC_MC - DEC media control\n")); xtermMediaControl(param[0], TRUE); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_HP_MEM_LOCK: case CASE_HP_MEM_UNLOCK: + TRACE(("%s\n", ((sp->parsestate[c] == CASE_HP_MEM_LOCK) + ? "CASE_HP_MEM_LOCK" + : "CASE_HP_MEM_UNLOCK"))); if (screen->scroll_amt) FlushScroll(screen); - if (parsestate[c] == CASE_HP_MEM_LOCK) + if (sp->parsestate[c] == CASE_HP_MEM_LOCK) screen->top_marg = screen->cur_row; else screen->top_marg = 0; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSTBM: - /* DECSTBM - set scrolling region */ + TRACE(("CASE_DECSTBM - set scrolling region\n")); if ((top = param[0]) < 1) top = 1; if (nparam < 2 || (bot = param[1]) == DEFAULT @@ -2039,11 +2045,11 @@ screen->bot_marg = bot - 1; CursorSet(screen, 0, 0, term->flags); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECREQTPARM: - /* DECREQTPARM */ + TRACE(("CASE_DECREQTPARM\n")); if (screen->terminal_id < 200) { /* VT102 */ if ((row = param[0]) == DEFAULT) row = 0; @@ -2063,7 +2069,7 @@ unparseseq(&reply, screen->respond); } } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSET: @@ -2072,7 +2078,7 @@ if (screen->vtXX_level != 0) #endif dpmodes(term, bitset); - parsestate = groundtable; + sp->parsestate = sp->groundtable; #if OPT_TEK4014 if (screen->TekEmu) return; @@ -2084,70 +2090,63 @@ dpmodes(term, bitclr); #if OPT_VT52_MODE if (screen->vtXX_level == 0) - groundtable = vt52_table; + sp->groundtable = vt52_table; else if (screen->terminal_id >= 100) - groundtable = ansi_table; + sp->groundtable = ansi_table; #endif - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECALN: - /* DECALN */ + TRACE(("CASE_DECALN - alignment test\n")); if (screen->cursor_state) HideCursor(); - for (row = screen->max_row; row >= 0; row--) { - bzero(SCRN_BUF_ATTRS(screen, row), - col = screen->max_col + 1); - for (cp = SCRN_BUF_CHARS(screen, row); col > 0; col--) - *cp++ = (Char) 'E'; - if_OPT_WIDE_CHARS(screen, { - bzero(SCRN_BUF_WIDEC(screen, row), - screen->max_col + 1); - }); - } - ScrnRefresh(screen, 0, 0, screen->max_row + 1, - screen->max_col + 1, False); - parsestate = groundtable; + screen->top_marg = 0; + screen->bot_marg = screen->max_row; + CursorSet(screen, 0, 0, term->flags); + xtermParseRect(screen, 0, 0, &myRect); + ScrnFillRectangle(screen, &myRect, 'E', 0); + sp->parsestate = sp->groundtable; break; case CASE_GSETS: - TRACE(("CASE_GSETS(%d) = '%c'\n", scstype, c)); + TRACE(("CASE_GSETS(%d) = '%c'\n", sp->scstype, c)); if (screen->vtXX_level != 0) - screen->gsets[scstype] = c; - parsestate = groundtable; + screen->gsets[sp->scstype] = c; + sp->parsestate = sp->groundtable; break; case CASE_DECSC: - /* DECSC */ + TRACE(("CASE_DECSC - save cursor\n")); CursorSave(term); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECRC: - /* DECRC */ + TRACE(("CASE_DECRC - restore cursor\n")); CursorRestore(term); if_OPT_ISO_COLORS(screen, { setExtendedFG(); }); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECKPAM: - /* DECKPAM */ + TRACE(("CASE_DECKPAM\n")); term->keyboard.flags |= MODE_DECKPAM; update_appkeypad(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECKPNM: - /* DECKPNM */ + TRACE(("CASE_DECKPNM\n")); term->keyboard.flags &= ~MODE_DECKPAM; update_appkeypad(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CSI_QUOTE_STATE: - parsestate = csi_quo_table; + sp->parsestate = csi_quo_table; break; #if OPT_VT52_MODE @@ -2157,8 +2156,8 @@ screen->vtXX_level)); if (screen->terminal_id >= 100 && screen->vtXX_level == 0) { - groundtable = - parsestate = ansi_table; + sp->groundtable = + sp->parsestate = ansi_table; screen->vtXX_level = screen->vt52_save_level; screen->curgl = screen->vt52_save_curgl; screen->curgr = screen->vt52_save_curgr; @@ -2171,19 +2170,19 @@ case CASE_ANSI_LEVEL_1: TRACE(("CASE_ANSI_LEVEL_1\n")); set_ansi_conformance(screen, 1); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_ANSI_LEVEL_2: TRACE(("CASE_ANSI_LEVEL_2\n")); set_ansi_conformance(screen, 2); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_ANSI_LEVEL_3: TRACE(("CASE_ANSI_LEVEL_3\n")); set_ansi_conformance(screen, 3); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSCL: @@ -2203,35 +2202,37 @@ show_8bit_control(True); } } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSCA: + TRACE(("CASE_DECSCA\n")); screen->protected_mode = DEC_PROTECT; if (param[0] <= 0 || param[0] == 2) term->flags &= ~PROTECTED; else if (param[0] == 1) term->flags |= PROTECTED; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSED: - /* DECSED */ + TRACE(("CASE_DECSED\n")); do_erase_display(screen, param[0], DEC_PROTECT); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSEL: - /* DECSEL */ + TRACE(("CASE_DECSEL\n")); do_erase_line(screen, param[0], DEC_PROTECT); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_ST: + TRACE(("CASE_ST: End of String (%d bytes)\n", string_used)); if (!string_used) break; string_area[--string_used] = '\0'; - switch (string_mode) { + switch (sp->string_mode) { case APC: /* ignored */ break; @@ -2248,128 +2249,130 @@ /* ignored */ break; } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SOS: - TRACE(("begin SOS: Start of String\n")); - string_mode = SOS; - parsestate = sos_table; + TRACE(("CASE_SOS: Start of String\n")); + sp->string_mode = SOS; + sp->parsestate = sos_table; break; case CASE_PM: - TRACE(("begin PM: Privacy Message\n")); - string_mode = PM; - parsestate = sos_table; + TRACE(("CASE_PM: Privacy Message\n")); + sp->string_mode = PM; + sp->parsestate = sos_table; break; case CASE_DCS: - TRACE(("begin DCS: Device Control String\n")); - string_mode = DCS; - parsestate = sos_table; + TRACE(("CASE_DCS: Device Control String\n")); + sp->string_mode = DCS; + sp->parsestate = sos_table; break; case CASE_APC: - TRACE(("begin APC: Application Program Command\n")); - string_mode = APC; - parsestate = sos_table; + TRACE(("CASE_APC: Application Program Command\n")); + sp->string_mode = APC; + sp->parsestate = sos_table; break; case CASE_SPA: + TRACE(("CASE_SPA - start protected area\n")); screen->protected_mode = ISO_PROTECT; term->flags |= PROTECTED; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_EPA: + TRACE(("CASE_EPA - end protected area\n")); term->flags &= ~PROTECTED; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SU: - /* SU */ + TRACE(("CASE_SU - scroll up\n")); if ((count = param[0]) < 1) count = 1; xtermScroll(screen, count); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_IND: - /* IND */ + TRACE(("CASE_IND - index\n")); xtermIndex(screen, 1); do_xevents(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CPL: - /* cursor prev line */ + TRACE(("CASE_CPL - cursor prev line\n")); CursorPrevLine(screen, param[0]); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CNL: - /* cursor next line */ + TRACE(("CASE_NPL - cursor next line\n")); CursorNextLine(screen, param[0]); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_NEL: - /* NEL */ + TRACE(("CASE_NEL\n")); xtermIndex(screen, 1); CarriageReturn(screen); do_xevents(); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_HTS: - /* HTS */ + TRACE(("CASE_HTS - horizontal tab set\n")); TabSet(term->tabs, screen->cur_col); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_RI: - /* RI */ + TRACE(("CASE_RI - reverse index\n")); RevIndex(screen, 1); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SS2: - /* SS2 */ + TRACE(("CASE_SS2\n")); screen->curss = 2; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_SS3: - /* SS3 */ + TRACE(("CASE_SS3\n")); screen->curss = 3; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_CSI_STATE: /* enter csi state */ nparam = 1; param[0] = DEFAULT; - parsestate = csi_table; + sp->parsestate = csi_table; break; case CASE_ESC_SP_STATE: /* esc space */ - parsestate = esc_sp_table; + sp->parsestate = esc_sp_table; break; case CASE_CSI_EX_STATE: /* csi exclamation */ - parsestate = csi_ex_table; + sp->parsestate = csi_ex_table; break; #if OPT_DEC_LOCATOR case CASE_CSI_TICK_STATE: /* csi tick (') */ - parsestate = csi_tick_table; + sp->parsestate = csi_tick_table; break; case CASE_DECEFR: - TRACE(("DECEFR - Enable Filter Rectangle\n")); + TRACE(("CASE_DECEFR - Enable Filter Rectangle\n")); if (screen->send_mouse_pos == DEC_LOCATOR) { MotionOff(screen, term); if ((screen->loc_filter_top = param[0]) < 1) @@ -2382,7 +2385,7 @@ screen->loc_filter_right = LOC_FILTER_POS; InitLocatorFilter(term); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECELR: @@ -2405,7 +2408,7 @@ } screen->loc_filter = FALSE; } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSLE: @@ -2432,7 +2435,7 @@ break; } } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECRQLP: @@ -2441,106 +2444,182 @@ /* Issue DECLRP Locator Position Report */ GetLocatorPosition(term); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; #endif /* OPT_DEC_LOCATOR */ +#if OPT_DEC_RECTOPS + case CASE_CSI_DOLLAR_STATE: + /* csi dollar ($) */ + if (screen->vtXX_level >= 4) + sp->parsestate = csi_dollar_table; + else + sp->parsestate = eigtable; + break; + + case CASE_CSI_STAR_STATE: + /* csi dollar (*) */ + if (screen->vtXX_level >= 4) + sp->parsestate = csi_star_table; + else + sp->parsestate = eigtable; + break; + + case CASE_DECCRA: + TRACE(("CASE_DECCRA - Copy rectangular area\n")); + xtermParseRect(screen, nparam, param, &myRect); + ScrnCopyRectangle(screen, &myRect, nparam - 5, param + 5); + break; + + case CASE_DECERA: + TRACE(("CASE_DECERA - Erase rectangular area\n")); + xtermParseRect(screen, nparam, param, &myRect); + ScrnFillRectangle(screen, &myRect, ' ', 0); + break; + + case CASE_DECFRA: + TRACE(("CASE_DECFRA - Fill rectangular area\n")); + if (nparam > 0 + && ((param[0] >= 32 && param[0] <= 126) + || (param[0] >= 160 && param[0] <= 255))) { + xtermParseRect(screen, nparam - 1, param + 1, &myRect); + ScrnFillRectangle(screen, &myRect, param[0], term->flags); + } + break; + + case CASE_DECSERA: + TRACE(("CASE_DECSERA - Selective erase rectangular area\n")); + xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect); + ScrnWipeRectangle(screen, &myRect); + break; + + case CASE_DECSACE: + TRACE(("CASE_DECSACE - Select attribute change extent\n")); + screen->cur_decsace = param[0]; + break; + + case CASE_DECCARA: + TRACE(("CASE_DECCARA - Change attributes in rectangular area\n")); + xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect); + ScrnMarkRectangle(screen, &myRect, False, nparam - 4, param + 4); + break; + + case CASE_DECRARA: + TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n")); + xtermParseRect(screen, nparam > 4 ? 4 : nparam, param, &myRect); + ScrnMarkRectangle(screen, &myRect, True, nparam - 4, param + 4); + break; +#else + case CASE_CSI_DOLLAR_STATE: + /* csi dollar ($) */ + sp->parsestate = eigtable; + break; + + case CASE_CSI_STAR_STATE: + /* csi dollar (*) */ + sp->parsestate = eigtable; + break; +#endif /* OPT_DEC_RECTOPS */ + case CASE_S7C1T: + TRACE(("CASE_S7C1T\n")); show_8bit_control(False); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_S8C1T: + TRACE(("CASE_S8C1T\n")); #if OPT_VT52_MODE if (screen->vtXX_level <= 1) break; #endif show_8bit_control(True); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_OSC: - TRACE(("begin OSC: Operating System Command\n")); - parsestate = sos_table; - string_mode = OSC; + TRACE(("CASE_OSC: Operating System Command\n")); + sp->parsestate = sos_table; + sp->string_mode = OSC; break; case CASE_RIS: - /* RIS */ + TRACE(("CASE_RIS\n")); VTReset(TRUE, TRUE); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_DECSTR: - /* DECSTR */ + TRACE(("CASE_DECSTR\n")); VTReset(FALSE, FALSE); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_REP: - /* REP */ - if (lastchar >= 0 && - groundtable[E2A(lastchar)] == CASE_PRINT) { + TRACE(("CASE_REP\n")); + if (sp->lastchar >= 0 && + sp->groundtable[E2A(sp->lastchar)] == CASE_PRINT) { IChar repeated[2]; count = (param[0] < 1) ? 1 : param[0]; - repeated[0] = lastchar; + repeated[0] = sp->lastchar; while (count-- > 0) { dotext(screen, screen->gsets[(int) (screen->curgl)], repeated, 1); } } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_LS2: - /* LS2 */ + TRACE(("CASE_LS2\n")); screen->curgl = 2; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_LS3: - /* LS3 */ + TRACE(("CASE_LS3\n")); screen->curgl = 3; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_LS3R: - /* LS3R */ + TRACE(("CASE_LS3R\n")); screen->curgr = 3; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_LS2R: - /* LS2R */ + TRACE(("CASE_LS2R\n")); screen->curgr = 2; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_LS1R: - /* LS1R */ + TRACE(("CASE_LS1R\n")); screen->curgr = 1; - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_XTERM_SAVE: savemodes(term); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_XTERM_RESTORE: restoremodes(term); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; case CASE_XTERM_WINOPS: + TRACE(("CASE_XTERM_WINOPS\n")); if (screen->allowWindowOps) window_ops(term); - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; #if OPT_WIDE_CHARS case CASE_ESC_PERCENT: - parsestate = esc_pct_table; + sp->parsestate = esc_pct_table; break; case CASE_UTF8: @@ -2564,16 +2643,39 @@ ? "UTF-8 mode set from command-line" : "wideChars resource was not set")); } - parsestate = groundtable; + sp->parsestate = sp->groundtable; break; #endif case CASE_CSI_IGNORE: - parsestate = cigtable; + sp->parsestate = cigtable; break; } - if (parsestate == groundtable) - lastchar = thischar; + if (sp->parsestate == sp->groundtable) + sp->lastchar = thischar; + } while (0); +} + +static void +VTparse(void) +{ + TScreen *screen; + + /* We longjmp back to this point in VTReset() */ + (void) setjmp(vtjmpbuf); + screen = &term->screen; + memset(&myState, 0, sizeof(myState)); +#if OPT_VT52_MODE + myState.groundtable = screen->vtXX_level ? ansi_table : vt52_table; +#else + myState.groundtable = ansi_table; +#endif + myState.parsestate = myState.groundtable; + myState.lastchar = -1; /* not a legal IChar */ + myState.nextstate = -1; /* not a legal state */ + + for (;;) { + doparsing(doinput(), &myState); } } @@ -3050,9 +3152,12 @@ }); #if OPT_WIDE_CHARS - for (offset = 0; offset < len && chars_chomped > 0; offset += chars_chomped) { + for (offset = 0; + offset < len && (chars_chomped > 0 || screen->do_wrap); + offset += chars_chomped) { int width_available = screen->max_col - screen->cur_col + 1; - int width_here = 0, need_wrap = 0; + int width_here = 0; + int need_wrap = 0; chars_chomped = 0; if (screen->do_wrap && (term->flags & WRAPAROUND)) { @@ -3082,13 +3187,9 @@ else width_here -= my_wcwidth(buf[chars_chomped + offset]); need_wrap = 1; - } - - if (width_here == width_available) { + } else if (width_here == width_available) { need_wrap = 1; - } - - if (chars_chomped != (len - offset)) { + } else if (chars_chomped != (len - offset)) { need_wrap = 1; } @@ -3100,7 +3201,7 @@ * rewriting all of the memory-management for the screen * buffers (perhaps this is simpler). */ - { + if (chars_chomped != 0) { static unsigned limit; static Char *hibyte, *lobyte; Boolean both = False; @@ -3221,6 +3322,11 @@ curXtermChrSet(screen->cur_row), len, visibleChars(PAIRED_CHARS(str, str2), len))); + if (ScrnHaveSelection(screen) + && ScrnIsLineInSelection(screen, screen->cur_row - screen->topline)) { + ScrnDisownSelection(screen); + } + if (screen->cur_row - screen->topline <= screen->max_row) { if (screen->cursor_state) HideCursor(); @@ -3239,7 +3345,7 @@ memset(str, ' ', len); if_OPT_WIDE_CHARS(screen, { if (str2 != 0) - memset(str2, ' ', len); + memset(str2, 0, len); }); } @@ -3257,19 +3363,9 @@ PAIRED_CHARS(str, str2), len, 0); resetXtermGC(screen, flags, False); - - /* - * The following statements compile data to compute the - * average number of characters written on each call to - * XText. The data may be examined via the use of a - * "hidden" escape sequence. - */ -#ifdef UNUSED - ctotal += len; - ++ntotal; -#endif } } + ScreenWrite(screen, PAIRED_CHARS(str, str2), flags, fg_bg, len); CursorForward(screen, visual_width(PAIRED_CHARS(str, str2), len)); #if OPT_ZICONBEEP @@ -3347,16 +3443,12 @@ TRACE(("HandleStructNotify(ConfigureNotify)\n")); #if OPT_TOOLBAR if (term->screen.Vshow) { -#ifndef NO_ACTIVE_ICON - struct _vtwin *Vwin = term->screen.whichVwin; -#else - struct _vtwin *Vwin = &(term->screen.fullVwin); -#endif - if (Vwin->menu_bar) { - XtVaGetValues(Vwin->menu_bar, - XtNheight, &Vwin->menu_height, + struct _vtwin *Vwin = WhichVWin(&(term->screen)); + if (Vwin->tb_info.menu_bar) { + XtVaGetValues(Vwin->tb_info.menu_bar, + XtNheight, &Vwin->tb_info.menu_height, (XtPointer) 0); - TRACE(("...menu_height %d\n", Vwin->menu_height)); + TRACE(("...menu_height %d\n", Vwin->tb_info.menu_height)); } } #endif @@ -3517,6 +3609,11 @@ MotionOff(screen, termw); set_mousemode(X10_MOUSE); break; +#if OPT_TOOLBAR + case 10: /* rxvt */ + ShowToolbar(func == bitset); + break; +#endif #if OPT_BLINK_CURS case 12: /* att610: Start/stop blinking cursor */ if (screen->cursor_blink_res) { @@ -3738,6 +3835,7 @@ register int i; for (i = 0; i < nparam; i++) { + TRACE(("savemodes %d\n", param[i])); switch (param[i]) { case 1: /* DECCKM */ DoSM(DP_DECCKM, termw->keyboard.flags & MODE_DECCKM); @@ -3765,6 +3863,11 @@ case SET_X10_MOUSE: /* mouse bogus sequence */ DoSM(DP_X_X10MSE, screen->send_mouse_pos); break; +#if OPT_TOOLBAR + case 10: /* rxvt */ + DoSM(DP_TOOLBAR, screen->toolbars); + break; +#endif #if OPT_BLINK_CURS case 12: /* att610: Start/stop blinking cursor */ if (screen->cursor_blink_res) { @@ -3848,6 +3951,7 @@ register int i, j; for (i = 0; i < nparam; i++) { + TRACE(("restoremodes %d\n", param[i])); switch (param[i]) { case 1: /* DECCKM */ bitcpy(&termw->keyboard.flags, @@ -3899,6 +4003,12 @@ case SET_X10_MOUSE: /* MIT bogus sequence */ DoRM(DP_X_X10MSE, screen->send_mouse_pos); break; +#if OPT_TOOLBAR + case 10: /* rxvt */ + DoRM(DP_TOOLBAR, screen->toolbars); + ShowToolbar(screen->toolbars); + break; +#endif #if OPT_BLINK_CURS case 12: /* att610: Start/stop blinking cursor */ if (screen->cursor_blink_res) { @@ -4045,6 +4155,7 @@ unsigned root_width; unsigned root_height; + TRACE(("window_ops %d\n", param[0])); switch (param[0]) { case 1: /* Restore (de-iconify) window */ XMapWindow(screen->display, @@ -4244,17 +4355,18 @@ || c == APC || c == SS3) { if (ap->a_pintro != 0) - unparseputc((char) ap->a_pintro, fd); + unparseputc(ap->a_pintro, fd); for (i = 0; i < ap->a_nparam; ++i) { if (i != 0) unparseputc(';', fd); unparseputn((unsigned int) ap->a_param[i], fd); } - inters = ap->a_inters; - for (i = 3; i >= 0; --i) { - c = CharOf(inters >> (8 * i)); - if (c != 0) - unparseputc(c, fd); + if ((inters = ap->a_inters) != 0) { + for (i = 3; i >= 0; --i) { + c = CharOf(inters >> (8 * i)); + if (c != 0) + unparseputc(c, fd); + } } unparseputc((char) ap->a_final, fd); } @@ -4274,9 +4386,8 @@ void unparseputc(int c, int fd) { - register TScreen *screen = &term->screen; IChar buf[2]; - register int i = 1; + int i = 1; #if OPT_TCAP_QUERY /* @@ -4285,7 +4396,7 @@ * printable ASCII (counting tab, carriage return, etc). For now, * just use hexadecimal for the whole thing. */ - if (screen->tc_query >= 0) { + if (term->screen.tc_query >= 0) { char tmp[3]; sprintf(tmp, "%02X", c & 0xFF); buf[0] = tmp[0]; @@ -4305,7 +4416,7 @@ /* If send/receive mode is reset, we echo characters locally */ if ((term->keyboard.flags & MODE_SRM) == 0) { - dotext(screen, screen->gsets[(int) (screen->curgl)], buf, i); + doparsing(c, &myState); } } @@ -4362,7 +4473,6 @@ rows = screen->max_row + 1; SwitchBufPtrs(screen); - TrackText(0, 0, 0, 0); /* remove any highlighting */ if ((top = -screen->topline) < rows) { if (screen->scroll_amt) @@ -4378,7 +4488,7 @@ (unsigned) (rows - top) * FontHeight(screen), FALSE); } - ScrnRefresh(screen, 0, 0, rows, screen->max_col + 1, False); + ScrnUpdate(screen, 0, 0, rows, screen->max_col + 1, False); } /* swap buffer line pointers between alt and regular screens */ @@ -4650,10 +4760,19 @@ (XtConvertArgList) NULL, (Cardinal) 0); } +/* + * The whole wnew->screen struct is zeroed in VTInitialize. Use these macros + * where applicable for copying the pieces from the request widget into the + * new widget. We do not have to use them for wnew->misc, but the associated + * traces are very useful for debugging. + */ #if OPT_TRACE #define init_Bres(name) \ TRACE(("init " #name " = %s\n", \ BtoS(wnew->name = request->name))) +#define init_Dres(name) \ + TRACE(("init " #name " = %lf\n", \ + wnew->name = request->name)) #define init_Ires(name) \ TRACE(("init " #name " = %d\n", \ wnew->name = request->name)) @@ -4666,6 +4785,7 @@ fill_Tres(wnew, request, offset))) #else #define init_Bres(name) wnew->name = request->name +#define init_Dres(name) wnew->name = request->name #define init_Ires(name) wnew->name = request->name #define init_Sres(name) wnew->name = x_strtrim(request->name) #define init_Tres(offset) fill_Tres(wnew, request, offset) @@ -4719,6 +4839,9 @@ { char *locale; Boolean is_utf8; +#ifdef HAVE_LANGINFO_CODESET + char *encoding; +#endif TRACE(("VTInitialize_locale\n")); TRACE(("... request screen.utf8_mode = %d\n", request->screen.utf8_mode)); @@ -4728,12 +4851,15 @@ if ((locale = getenv("LANG")) == 0 || *locale == '\0') locale = ""; #ifdef HAVE_LANGINFO_CODESET - is_utf8 = (strcmp(nl_langinfo(CODESET), "UTF-8") == 0); + encoding = nl_langinfo(CODESET); + is_utf8 = (strcmp(encoding, "UTF-8") == 0); #else is_utf8 = (strstr(locale, "UTF-8") != NULL); #endif TRACE(("... is_utf8 = %s\n", BtoS(is_utf8))); + request->screen.latin9_mode = 0; + request->screen.unicode_font = 0; #if OPT_LUIT_PROG request->misc.callfilter = 0; request->misc.use_encoding = 0; @@ -4741,11 +4867,46 @@ TRACE(("... setup for luit:\n")); TRACE(("... request misc.locale_str = \"%s\"\n", request->misc.locale_str)); - if (x_strcasecmp(request->misc.locale_str, "TRUE") == 0 || - x_strcasecmp(request->misc.locale_str, "ON") == 0 || - x_strcasecmp(request->misc.locale_str, "YES") == 0 || - x_strcasecmp(request->misc.locale_str, "AUTO") == 0 || - strcmp(request->misc.locale_str, "1") == 0) { +#if OPT_MINI_LUIT + if (x_strcasecmp(request->misc.locale_str, "CHECKFONT") == 0) { + int fl = (request->misc.default_font.f_n + ? strlen(request->misc.default_font.f_n) + : 0); + if (fl > 11 + && x_strcasecmp(request->misc.default_font.f_n + fl - 11, + "-ISO10646-1") == 0) { + request->screen.unicode_font = 1; + /* unicode font, use TRUE */ +#ifdef HAVE_LANGINFO_CODESET + if (!strcmp(encoding, "ANSI_X3.4-1968") + || !strcmp(encoding, "ISO-8859-1")) { + if (request->screen.utf8_mode == 3) + request->screen.utf8_mode = 0; + } else if (!strcmp(encoding, "ISO-8859-15")) { + if (request->screen.utf8_mode == 3) + request->screen.utf8_mode = 0; + request->screen.latin9_mode = 1; + } else { + request->misc.callfilter = is_utf8 ? 0 : 1; + request->screen.utf8_mode = 2; + } +#else + request->misc.callfilter = is_utf8 ? 0 : 1; + request->screen.utf8_mode = 2; +#endif + } else { + /* other encoding, use FALSE */ + if (request->screen.utf8_mode == 3) { + request->screen.utf8_mode = is_utf8 ? 2 : 0; + } + } + } else +#endif /* OPT_MINI_LUIT */ + if (x_strcasecmp(request->misc.locale_str, "TRUE") == 0 || + x_strcasecmp(request->misc.locale_str, "ON") == 0 || + x_strcasecmp(request->misc.locale_str, "YES") == 0 || + x_strcasecmp(request->misc.locale_str, "AUTO") == 0 || + strcmp(request->misc.locale_str, "1") == 0) { /* when true ... fully obeying LC_CTYPE locale */ request->misc.callfilter = is_utf8 ? 0 : 1; request->screen.utf8_mode = 2; @@ -4805,7 +4966,7 @@ VTInitialize(Widget wrequest, Widget new_arg, ArgList args GCC_UNUSED, - Cardinal * num_args GCC_UNUSED) + Cardinal *num_args GCC_UNUSED) { XtermWidget request = (XtermWidget) wrequest; XtermWidget wnew = (XtermWidget) new_arg; @@ -4918,6 +5079,9 @@ init_Ires(screen.scrolllines); init_Bres(screen.scrollttyoutput); init_Bres(screen.scrollkey); +#if OPT_TOOLBAR + init_Bres(screen.toolbars); +#endif init_Sres(screen.term_id); for (s = request->screen.term_id; *s; s++) { @@ -4998,6 +5162,9 @@ init_Bres(screen.allowWindowOps); #ifndef NO_ACTIVE_ICON wnew->screen.fnt_icon = request->screen.fnt_icon; + init_Bres(misc.active_icon); + init_Ires(misc.icon_border_width); + wnew->misc.icon_border_pixel = request->misc.icon_border_pixel; #endif /* NO_ACTIVE_ICON */ init_Bres(misc.titeInhibit); init_Bres(misc.tiXtraScroll); @@ -5110,6 +5277,8 @@ || visInfoPtr->depth <= 1) { TRACE(("disabling color since screen is monochrome\n")); color_ok = False; + } else { + XFree(visInfoPtr); } } @@ -5167,7 +5336,7 @@ #endif #if OPT_RENDERFONT - init_Ires(misc.face_size); + init_Dres(misc.face_size); init_Sres(misc.face_name); init_Sres(misc.face_wide_name); init_Bres(misc.render_font); @@ -5195,6 +5364,17 @@ } TRACE(("initialized UTF-8 mode to %d\n", wnew->screen.utf8_mode)); +#if OPT_MINI_LUIT + if (request->screen.latin9_mode) { + wnew->screen.latin9_mode = True; + } + if (request->screen.unicode_font) { + wnew->screen.unicode_font = True; + } + TRACE(("initialized Latin9 mode to %d\n", wnew->screen.latin9_mode)); + TRACE(("initialized unicode_font to %d\n", wnew->screen.unicode_font)); +#endif + if (wnew->screen.wide_chars != False) wnew->num_ptrs = (OFF_COM2H + 1); #endif /* OPT_WIDE_CHARS */ @@ -5227,8 +5407,8 @@ #if HANDLE_STRUCT_NOTIFY #if OPT_TOOLBAR - wnew->screen.fullVwin.menu_bar = request->screen.fullVwin.menu_bar; - init_Ires(screen.fullVwin.menu_height); + wnew->VT100_TB_INFO(menu_bar) = request->VT100_TB_INFO(menu_bar); + init_Ires(VT100_TB_INFO(menu_height)); #else /* Flag icon name with "***" on window output when iconified. * Put in a handler that will tell us when we get Map/Unmap events. @@ -5451,10 +5631,11 @@ #ifndef NO_ACTIVE_ICON if (term->misc.active_icon && screen->fnt_icon) { int iconX = 0, iconY = 0; - Widget shell = XtParent(term); + Widget shell = SHELL_OF(term); unsigned long mask; XGCValues xgcv; + TRACE(("Initializing active-icon\n")); XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0); xtermComputeFontInfo(screen, &(screen->iconVwin), screen->fnt_icon, 0); @@ -5499,7 +5680,18 @@ screen->iconVwin.reverseGC = screen->iconVwin.reverseboldGC = XtGetGC(shell, mask, &xgcv); +#if OPT_TOOLBAR + /* + * Toolbar is initialized before we get here. Enable the menu item + * and set it properly. + */ + set_sensitivity(mw, + vtMenuEntries[vtMenu_activeicon].widget, + TRUE); + update_activeicon(); +#endif } else { + TRACE(("Disabled active-icon\n")); term->misc.active_icon = False; } #endif /* NO_ACTIVE_ICON */ @@ -5586,7 +5778,6 @@ { unsigned i, j; char *p, *s, *t, *ns, *end, buf[32]; - XIM xim = (XIM) NULL; XIMStyles *xim_styles; XIMStyle input_style = 0; Boolean found; @@ -5613,7 +5804,7 @@ if (!term->misc.input_method || !*term->misc.input_method) { if ((p = XSetLocaleModifiers("")) != NULL && *p) - xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL); + term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL); } else { s = term->misc.input_method; i = 5 + strlen(s); @@ -5636,7 +5827,10 @@ strncat(t, s, end - s); if ((p = XSetLocaleModifiers(t)) != 0 && *p - && (xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL)) != 0) + && (term->screen.xim = XOpenIM(XtDisplay(term), + NULL, + NULL, + NULL)) != 0) break; } @@ -5645,20 +5839,23 @@ MyStackFree(t, buf); } - if (xim == NULL && (p = XSetLocaleModifiers("@im=none")) != NULL && *p) - xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL); + if (term->screen.xim == NULL + && (p = XSetLocaleModifiers("@im=none")) != NULL + && *p) { + term->screen.xim = XOpenIM(XtDisplay(term), NULL, NULL, NULL); + } - if (!xim) { + if (!term->screen.xim) { fprintf(stderr, "Failed to open input method\n"); return; } TRACE(("VTInitI18N opened input method\n")); - if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) + if (XGetIMValues(term->screen.xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles || !xim_styles->count_styles) { fprintf(stderr, "input method doesn't support any style\n"); - XCloseIM(xim); + XCloseIM(term->screen.xim); term->misc.cannot_im = True; return; } @@ -5702,7 +5899,7 @@ fprintf(stderr, "input method doesn't support my preedit type (%s)\n", term->misc.preedit_type); - XCloseIM(xim); + XCloseIM(term->screen.xim); term->misc.cannot_im = True; return; } @@ -5714,7 +5911,7 @@ if (input_style == (XIMPreeditArea | XIMStatusArea)) { fprintf(stderr, "This program doesn't support the 'OffTheSpot' preedit type\n"); - XCloseIM(xim); + XCloseIM(term->screen.xim); term->misc.cannot_im = True; return; } @@ -5753,7 +5950,7 @@ if (term->screen.fs == NULL) { fprintf(stderr, "Preparation of default font set " "\"%s\" for XIM failed.\n", DEFXIMFONT); - XCloseIM(xim); + XCloseIM(term->screen.xim); term->misc.cannot_im = True; return; } @@ -5767,14 +5964,14 @@ XNSpotLocation, &spot, XNFontSet, term->screen.fs, NULL); - term->screen.xic = XCreateIC(xim, + term->screen.xic = XCreateIC(term->screen.xim, XNInputStyle, input_style, XNClientWindow, XtWindow(term), XNFocusWindow, XtWindow(term), XNPreeditAttributes, p_list, NULL); } else { - term->screen.xic = XCreateIC(xim, XNInputStyle, input_style, + term->screen.xic = XCreateIC(term->screen.xim, XNInputStyle, input_style, XNClientWindow, XtWindow(term), XNFocusWindow, XtWindow(term), NULL); @@ -5782,7 +5979,7 @@ if (!term->screen.xic) { fprintf(stderr, "Failed to create input context\n"); - XCloseIM(xim); + XCloseIM(term->screen.xim); } #if defined(USE_XIM_INSTANTIATE_CB) else { @@ -5790,7 +5987,7 @@ destroy_cb.callback = xim_destroy_cb; destroy_cb.client_data = NULL; - if (XSetIMValues(xim, XNDestroyCallback, &destroy_cb, NULL)) + if (XSetIMValues(term->screen.xim, XNDestroyCallback, &destroy_cb, NULL)) fprintf(stderr, "Could not set destroy callback to IM\n"); } #endif @@ -5820,7 +6017,7 @@ Widget request GCC_UNUSED, Widget wnew, ArgList args GCC_UNUSED, - Cardinal * num_args GCC_UNUSED) + Cardinal *num_args GCC_UNUSED) { XtermWidget curvt = (XtermWidget) cur; XtermWidget newvt = (XtermWidget) wnew; @@ -5875,6 +6072,14 @@ #define setGC(value) set_at = __LINE__, currentGC = value +#define OutsideSelection(screen,row,col) \ + ((row) > (screen)->endHRow || \ + ((row) == (screen)->endHRow && \ + (col) >= (screen)->endHCol) || \ + (row) < (screen)->startHRow || \ + ((row) == (screen)->startHRow && \ + (col) < (screen)->startHCol)) + /* * Shows cursor at new cursor position in screen. */ @@ -5962,6 +6167,20 @@ } /* + * If the cursor happens to be on blanks, and the foreground color is set + * but not the background, do not treat it as a colored cell. + */ +#if OPT_ISO_COLORS + if ((flags & TERM_COLOR_FLAGS) == BG_COLOR +#if OPT_WIDE_CHARS + && chi == 0 +#endif + && clo == ' ') { + flags &= ~TERM_COLOR_FLAGS; + } +#endif + + /* * Compare the current cell to the last set of colors used for the * cursor and update the GC's if needed. */ @@ -5975,12 +6194,7 @@ fg_pix = getXtermForeground(flags, extract_fg(fg_bg, flags)); bg_pix = getXtermBackground(flags, extract_bg(fg_bg, flags)); - if (screen->cur_row > screen->endHRow || - (screen->cur_row == screen->endHRow && - screen->cur_col >= screen->endHCol) || - screen->cur_row < screen->startHRow || - (screen->cur_row == screen->startHRow && - screen->cur_col < screen->startHCol)) + if (OutsideSelection(screen, screen->cur_row, screen->cur_col)) in_selection = False; else in_selection = True; @@ -6160,12 +6374,7 @@ fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[cursor_col]; }); - if (screen->cursor_row > screen->endHRow || - (screen->cursor_row == screen->endHRow && - screen->cursor_col >= screen->endHCol) || - screen->cursor_row < screen->startHRow || - (screen->cursor_row == screen->startHRow && - screen->cursor_col < screen->startHCol)) + if (OutsideSelection(screen, screen->cursor_row, screen->cursor_col)) in_selection = False; else in_selection = True; @@ -6554,7 +6763,7 @@ HandleKeymapChange(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { static XtTranslations keymap, original; static XtResource key_resources[] = @@ -6591,7 +6800,7 @@ (void) strcpy(pmapClass, pmapName); if (islower(CharOf(pmapClass[0]))) pmapClass[0] = toupper(CharOf(pmapClass[0])); - XtGetSubresources(w, (XtPointer) & keymap, pmapName, pmapClass, + XtGetSubresources(w, (XtPointer) &keymap, pmapName, pmapClass, key_resources, (Cardinal) 1, NULL, (Cardinal) 0); if (keymap != NULL) XtOverrideTranslations(w, keymap); @@ -6605,7 +6814,7 @@ HandleBell(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params, /* [0] = volume */ - Cardinal * param_count) /* 0 or 1 */ + Cardinal *param_count) /* 0 or 1 */ { int percent = (*param_count) ? atoi(params[0]) : 0; @@ -6617,7 +6826,7 @@ HandleVisualBell(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { VisualBell(); } @@ -6627,7 +6836,7 @@ HandleIgnore(Widget w, XEvent * event, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { /* do nothing, but check for funny escape sequences */ (void) SendMousePosition(w, event); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/configure x11r682/xc/programs/xterm/configure --- xc/programs/xterm/configure 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/configure 2005-01-12 22:45:09.000000000 +0100 @@ -235,11 +235,12 @@ --disable-tek4014 disable tek4014 emulation --enable-toolbar compile-in toolbar for pulldown menus --disable-vt52 disable VT52 emulation + --enable-mini-luit enable mini-luit (built-in Latin9 support) --enable-luit enable luit filter (Unicode translation) --enable-wide-chars enable wide-character support - --enable-dabbrev enable dynamic-abbreviation support EOF cat <<\EOF + --enable-dabbrev enable dynamic-abbreviation support --enable-dec-locator enable DECterm Locator support --disable-ziconbeep disable -ziconbeep option Testing/development Options: @@ -614,7 +615,7 @@ fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:618: checking host system type" >&5 +echo "configure:619: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -675,7 +676,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:679: checking for $ac_word" >&5 +echo "configure:680: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -705,7 +706,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:709: checking for $ac_word" >&5 +echo "configure:710: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -756,7 +757,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:760: checking for $ac_word" >&5 +echo "configure:761: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -788,7 +789,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:792: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:793: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -799,12 +800,12 @@ cat > conftest.$ac_ext << EOF -#line 803 "configure" +#line 804 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -830,12 +831,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:834: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:835: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:839: checking whether we are using GNU C" >&5 +echo "configure:840: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -844,7 +845,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:848: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -863,7 +864,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:867: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:868: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -895,7 +896,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:899: checking how to run the C preprocessor" >&5 +echo "configure:900: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -910,13 +911,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -927,13 +928,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -944,13 +945,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -976,13 +977,13 @@ if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:980: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:981: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -1000,7 +1001,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -1026,7 +1027,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1030: checking for $ac_word" >&5 +echo "configure:1031: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1067,7 +1068,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1071: checking for a BSD compatible install" >&5 +echo "configure:1072: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1138,12 +1139,46 @@ # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," +for ac_prog in tdlint lint alint +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1148: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LINT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LINT"; then + ac_cv_prog_LINT="$LINT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LINT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LINT="$ac_cv_prog_LINT" +if test -n "$LINT"; then + echo "$ac_t""$LINT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$LINT" && break +done + ### checks for UNIX variants that set C preprocessor variables echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:1145: checking for AIX" >&5 +echo "configure:1180: checking for AIX" >&5 cat > conftest.$ac_ext <&6 -echo "configure:1169: checking for POSIXized ISC" >&5 +echo "configure:1204: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -1186,672 +1221,692 @@ fi -### checks for header files -for ac_hdr in \ -ncurses/term.h \ -stdlib.h \ -termios.h \ -unistd.h \ +### checks for compiler characteristics -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1200: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 +echo "configure:1228: checking for ${CC-cc} option to accept ANSI C" >&5 +if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done + +cf_cv_ansi_cc=no +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc +# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) +for cf_arg in "-DCC_HAS_PROTOS" \ + "" \ + -qlanglvl=ansi \ + -std1 \ + -Ae \ + "-Aa -D_HPUX_SOURCE" \ + -Xc +do + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= -echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:1237: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -int main() { -struct tm *tp; -; return 0; } -EOF -if { (eval echo configure:1251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_time=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_time=no -fi -rm -f conftest* -fi +for cf_add_cflags in $cf_arg +do +case $cf_fix_cppflags in +no) + case $cf_add_cflags in #(vi + -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi + case $cf_add_cflags in + -D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes -fi + if test $cf_fix_cppflags = yes ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + fi + ;; + esac + case "$CPPFLAGS" in + *$cf_add_cflags) #(vi + ;; + *) #(vi + cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" + ;; + esac + ;; + *) + cf_new_cflags="$cf_new_cflags $cf_add_cflags" + ;; + esac + ;; +yes) + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6 -echo "configure:1273: checking for nl_langinfo and CODESET" >&5 -if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char* cs = nl_langinfo(CODESET); -; return 0; } -EOF -if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_langinfo_codeset=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - am_cv_langinfo_codeset=no + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + CFLAGS="$CFLAGS $cf_new_cflags" fi -rm -f conftest* - + +if test -n "$cf_new_cppflags" ; then + + CPPFLAGS="$cf_new_cppflags $CPPFLAGS" fi -echo "$ac_t""$am_cv_langinfo_codeset" 1>&6 - if test $am_cv_langinfo_codeset = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LANGINFO_CODESET 1 -EOF +if test -n "$cf_new_extra_cppflags" ; then + + EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" +fi - fi -### checks for typedefs -echo $ac_n "checking for size_t in or ""... $ac_c" 1>&6 -echo "configure:1310: checking for size_t in or " >&5 -if eval "test \"`echo '$''{'cf_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef STDC_HEADERS -#include -#include +#ifndef CC_HAS_PROTOS +#if !defined(__STDC__) || (__STDC__ != 1) +choke me #endif -#include +#endif + int main() { -size_t x + + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; ; return 0; } EOF -if { (eval echo configure:1329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - cf_cv_type_size_t=yes + cf_cv_ansi_cc="$cf_arg"; break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_cv_type_size_t=no fi rm -f conftest* - +done +CFLAGS="$cf_save_CFLAGS" +CPPFLAGS="$cf_save_CPPFLAGS" + fi -echo "$ac_t""$cf_cv_type_size_t" 1>&6 -test $cf_cv_type_size_t = no && cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF +echo "$ac_t""$cf_cv_ansi_cc" 1>&6 +if test "$cf_cv_ansi_cc" != "no"; then +if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1349: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no +for cf_add_cflags in $cf_cv_ansi_cc +do +case $cf_fix_cppflags in +no) + case $cf_add_cflags in #(vi + -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi + case $cf_add_cflags in + -D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` + + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + fi + ;; + esac + case "$CPPFLAGS" in + *$cf_add_cflags) #(vi + ;; + *) #(vi + cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" + ;; + esac + ;; + *) + cf_new_cflags="$cf_new_cflags $cf_add_cflags" + ;; + esac + ;; +yes) + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` + + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + + CFLAGS="$CFLAGS $cf_new_cflags" fi -rm -f conftest* -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no +if test -n "$cf_new_cppflags" ; then + + CPPFLAGS="$cf_new_cppflags $CPPFLAGS" fi -rm -f conftest* +if test -n "$cf_new_extra_cppflags" ; then + + EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : + + + else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* + cat >> confdefs.h <<\EOF +#define CC_HAS_PROTOS 1 +EOF fi +fi -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:1439: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } +int main() { + +/* Ultrix mips cc rejects this. */ +typedef int charset[2]; const charset x; +/* SunOS 4.1.1 cc rejects this. */ +char const *const *ccp; +char **p; +/* NEC SVR4.0.2 mips cc rejects this. */ +struct point {int x, y;}; +static struct point const zero = {0,0}; +/* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in an arm + of an if-expression whose if-part is not a constant expression */ +const char *g = "string"; +ccp = &g + (g ? g-g : 0); +/* HPUX 7.0 cc rejects these. */ +++ccp; +p = (char**) ccp; +ccp = (char const *const *) p; +{ /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +} +{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; +} +{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; +} +{ /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } EOF -if { (eval echo configure:1429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : +if { (eval echo configure:1493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - + rm -rf conftest* + ac_cv_c_const=no fi +rm -f conftest* fi -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 +#define const EOF fi -echo $ac_n "checking for time_t""... $ac_c" 1>&6 -echo "configure:1453: checking for time_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_time_t'+set}'`\" = set"; then +echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 +echo "configure:1514: checking for Cygwin environment" >&5 +if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include + +int main() { + +#ifndef __CYGWIN__ +#define __CYGWIN__ __CYGWIN32__ #endif +return __CYGWIN__; +; return 0; } EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])time_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then +if { (eval echo configure:1530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_type_time_t=yes + ac_cv_cygwin=yes else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_type_time_t=no + ac_cv_cygwin=no fi rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_time_t" 1>&6 -if test $ac_cv_type_time_t = no; then - cat >> confdefs.h <<\EOF -#define time_t long -EOF - +rm -f conftest* fi - -### checks for library functions -for ac_func in \ - bcopy \ - gethostname \ - getlogin \ - memmove \ - strerror \ - strftime \ - tcgetattr \ - waitpid \ - -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1499: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then +echo "$ac_t""$ac_cv_cygwin" 1>&6 +CYGWIN= +test "$ac_cv_cygwin" = yes && CYGWIN=yes +echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 +echo "configure:1547: checking for mingw32 environment" >&5 +if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +return __MINGW32__; ; return 0; } EOF -if { (eval echo configure:1527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + ac_cv_mingw32=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + ac_cv_mingw32=no fi rm -f conftest* +rm -f conftest* fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 +MINGW32= +test "$ac_cv_mingw32" = yes && MINGW32=yes + + +case $cf_cv_system_name in +os2*) + CFLAGS="$CFLAGS -Zmt" + CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" + CXXFLAGS="$CXXFLAGS -Zmt" + # autoconf's macro sets -Zexe and suffix both, which conflict:w + LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" + ac_cv_exeext=.exe + ;; +esac + + + +echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +echo "configure:1591: checking for executable suffix" >&5 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "$ac_t""no" 1>&6 + if test "$CYGWIN" = yes || test "$MINGW32" = yes; then + ac_cv_exeext=.exe +else + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= + if { (eval echo configure:1601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in + *.c | *.o | *.obj) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done + else + { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } + fi + rm -f conftest* + test x"${ac_cv_exeext}" = x && ac_cv_exeext=no +fi fi -done +EXEEXT="" +test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} +echo "$ac_t""${ac_cv_exeext}" 1>&6 +ac_exeext=$EXEEXT -echo $ac_n "checking for memmove""... $ac_c" 1>&6 -echo "configure:1553: checking for memmove" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then +echo $ac_n "checking for object suffix""... $ac_c" 1>&6 +echo "configure:1622: checking for object suffix" >&5 +if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char memmove(); + rm -f conftest* +echo 'int i = 1;' > conftest.$ac_ext +if { (eval echo configure:1628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; } +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_objext" 1>&6 +OBJEXT=$ac_cv_objext +ac_objext=$ac_cv_objext + +PROG_EXT="$EXEEXT" + +test -n "$PROG_EXT" && cat >> confdefs.h <&6 +echo "configure:1676: checking if we must define _GNU_SOURCE" >&5 +if eval "test \"`echo '$''{'cf_cv_gnu_source'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +cat > conftest.$ac_ext < int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_memmove) || defined (__stub___memmove) -choke me -#else -memmove(); +#ifndef _XOPEN_SOURCE +make an error #endif +; return 0; } +EOF +if { (eval echo configure:1692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_gnu_source=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + cat > conftest.$ac_ext < +int main() { +#ifdef _XOPEN_SOURCE +make an error +#endif ; return 0; } EOF -if { (eval echo configure:1581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_memmove=yes" + cf_cv_gnu_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_memmove=no" + cf_cv_gnu_source=yes fi rm -f conftest* + CPPFLAGS="$cf_save" + fi +rm -f conftest* -if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 +fi -echo $ac_n "checking for bcopy""... $ac_c" 1>&6 -echo "configure:1600: checking for bcopy" >&5 -if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then +echo "$ac_t""$cf_cv_gnu_source" 1>&6 +test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + + ;; +mirbsd*) #(vi + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks + ;; +netbsd*) #(vi + # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +openbsd*) #(vi + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +osf[45]*) #(vi + CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE" + ;; +sco*) #(vi + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +solaris*) #(vi + CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__" + ;; +*) + echo $ac_n "checking if we should define _XOPEN_SOURCE""... $ac_c" 1>&6 +echo "configure:1753: checking if we should define _XOPEN_SOURCE" >&5 +if eval "test \"`echo '$''{'cf_cv_xopen_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char bcopy(); - +#include int main() { -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_bcopy) || defined (__stub___bcopy) -choke me -#else -bcopy(); +#ifndef _XOPEN_SOURCE +make an error #endif +; return 0; } +EOF +if { (eval echo configure:1769: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_xopen_source=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + cat > conftest.$ac_ext < +int main() { +#ifdef _XOPEN_SOURCE +make an error +#endif ; return 0; } EOF -if { (eval echo configure:1628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_func_bcopy=yes" + cf_cv_xopen_source=no else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_bcopy=no" + cf_cv_xopen_source=$cf_XOPEN_SOURCE fi rm -f conftest* + CPPFLAGS="$cf_save" + fi +rm -f conftest* -if eval "test \"`echo '$ac_cv_func_'bcopy`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6 -echo "configure:1644: checking if bcopy does overlapping moves" >&5 -if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then +fi + +echo "$ac_t""$cf_cv_xopen_source" 1>&6 +test "$cf_cv_xopen_source" != no && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source" + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE +echo $ac_n "checking if we should define _POSIX_C_SOURCE""... $ac_c" 1>&6 +echo "configure:1811: checking if we should define _POSIX_C_SOURCE" >&5 +if eval "test \"`echo '$''{'cf_cv_posix_c_source'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - cf_cv_good_bcopy=unknown -else - cat > conftest.$ac_ext <&5 + + cat > conftest.$ac_ext < +int main() { + +#ifndef _POSIX_C_SOURCE +make an error +#endif +; return 0; } +EOF +if { (eval echo configure:1830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_posix_c_source=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + case .$cf_POSIX_C_SOURCE in + .[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + .2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_POSIX_SOURCE" + ;; + .*) + cf_cv_posix_c_source="-D_POSIX_SOURCE" + ;; + esac + +echo "(line 1849) testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source" + +echo "(line 1854) testing if the second compile does not leave our definition intact error ..." 1>&5 + cat > conftest.$ac_ext < int main() { - static char data[] = "abcdefghijklmnopqrstuwwxyz"; - char temp[40]; - bcopy(data, temp, sizeof(data)); - bcopy(temp+10, temp, 15); - bcopy(temp+5, temp+15, 10); - exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); -} - + +#ifndef _POSIX_C_SOURCE +make an error +#endif +; return 0; } EOF -if { (eval echo configure:1666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - cf_cv_good_bcopy=yes +if { (eval echo configure:1867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - cf_cv_good_bcopy=no + rm -rf conftest* + cf_cv_posix_c_source=no fi -rm -fr conftest* +rm -f conftest* + CPPFLAGS="$cf_save" + fi +rm -f conftest* - fi -echo "$ac_t""$cf_cv_good_bcopy" 1>&6 - -else - echo "$ac_t""no" 1>&6 -cf_cv_good_bcopy=no -fi - - if test "$cf_cv_good_bcopy" = yes ; then - cat >> confdefs.h <<\EOF -#define USE_OK_BCOPY 1 -EOF - - else - cat >> confdefs.h <<\EOF -#define USE_MY_MEMMOVE 1 -EOF - - fi - -fi - - -# compute a reasonable value for $TERM to give tgetent(), since we may be -# running in 'screen', which sets $TERMCAP to a specific entry that is not -# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply -# discard $TERMCAP. -cf_TERMVAR=vt100 -test -n "$TERMCAP" && cf_TERMVAR="$TERM" -test -z "$cf_TERMVAR" && cf_TERMVAR=vt100 - -echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6 -echo "configure:1712: checking for full tgetent function" >&5 -if eval "test \"`echo '$''{'cf_cv_lib_tgetent'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - -cf_save_LIBS="$LIBS" -cf_cv_lib_tgetent=no -cf_TERMLIB="termcap termlib ncurses curses" -for cf_termlib in '' $cf_TERMLIB ; do - LIBS="$cf_save_LIBS" - test -n "$cf_termlib" && LIBS="$LIBS -l$cf_termlib" - if test "$cross_compiling" = yes; then - echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5 -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&5 - if test -n "$cf_termlib" ; then - cf_cv_lib_tgetent="-l$cf_termlib" - else - cf_cv_lib_tgetent=yes - fi - break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - echo "no, there is no termcap/tgetent in $cf_termlib" 1>&5 -fi -rm -fr conftest* -fi - -done -LIBS="$cf_save_LIBS" - -fi - -echo "$ac_t""$cf_cv_lib_tgetent" 1>&6 - -# If we found a working tgetent(), set LIBS and check for termcap.h. -# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should -# not have side effects other than setting the cache variable, because -# they are not executed when a cached value exists.) -if test "$cf_cv_lib_tgetent" != no ; then - test "$cf_cv_lib_tgetent" != yes && LIBS="$LIBS $cf_cv_lib_tgetent" - cat >> confdefs.h <<\EOF -#define USE_TERMCAP 1 -EOF - - cat > conftest.$ac_ext < -int main() { - -#ifdef NCURSES_VERSION -make an error -#endif -; return 0; } -EOF -if { (eval echo configure:1788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cat >> confdefs.h <<\EOF -#define HAVE_TERMCAP_H 1 -EOF +echo "$ac_t""$cf_cv_posix_c_source" 1>&6 +test "$cf_cv_posix_c_source" != no && CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -else - # If we didn't find a tgetent() that supports the buffer - # argument, look again to see whether we can find even - # a crippled one. A crippled tgetent() is still useful to - # validate values for the TERM environment variable given to - # child processes. - echo $ac_n "checking for partial tgetent function""... $ac_c" 1>&6 -echo "configure:1806: checking for partial tgetent function" >&5 -if eval "test \"`echo '$''{'cf_cv_lib_part_tgetent'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cf_cv_lib_part_tgetent=no - for cf_termlib in $cf_TERMLIB ; do - LIBS="$cf_save_LIBS -l$cf_termlib" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - echo "there is a terminfo/tgetent in $cf_termlib" 1>&5 - cf_cv_lib_part_tgetent="-l$cf_termlib" - break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* - done - LIBS="$cf_save_LIBS" - -fi -echo "$ac_t""$cf_cv_lib_part_tgetent" 1>&6 +### checks for header files +for ac_hdr in \ +ncurses/term.h \ +stdlib.h \ +termios.h \ +unistd.h \ - if test "$cf_cv_lib_part_tgetent" != no ; then - LIBS="$LIBS $cf_cv_lib_part_tgetent" - for ac_hdr in termcap.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1845: checking for $ac_hdr" >&5 +echo "configure:1900: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1877,1188 +1932,1404 @@ fi done - - # If this is linking against ncurses, we'll trigger the - # ifdef in resize.c that turns the termcap stuff back off. - cat >> confdefs.h <<\EOF -#define USE_TERMINFO 1 -EOF - - fi -fi - - -for ac_hdr in lastlog.h paths.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1896: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:1937: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +#include +#include +#include +int main() { +struct tm *tp; +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:1951: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + ac_cv_header_time=yes else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + ac_cv_header_time=no fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 EOF - -else - echo "$ac_t""no" 1>&6 + fi -done -echo $ac_n "checking for lastlog path""... $ac_c" 1>&6 -echo "configure:1933: checking for lastlog path" >&5 -if eval "test \"`echo '$''{'cf_cv_path_lastlog'+set}'`\" = set"; then + + echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6 +echo "configure:1973: checking for nl_langinfo and CODESET" >&5 +if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - -cat > conftest.$ac_ext < conftest.$ac_ext < -#ifdef HAVE_LASTLOG_H -#include -#else -#ifdef HAVE_PATHS_H -#include -#endif -#endif +#include int main() { -char *path = _PATH_LASTLOG +char* cs = nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:1954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_path_lastlog="_PATH_LASTLOG" + am_cv_langinfo_codeset=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - if test -f /usr/adm/lastlog ; then - cf_cv_path_lastlog=/usr/adm/lastlog - else - cf_cv_path_lastlog=no - fi + am_cv_langinfo_codeset=no fi rm -f conftest* - + fi -echo "$ac_t""$cf_cv_path_lastlog" 1>&6 -test $cf_cv_path_lastlog != no && cat >> confdefs.h <<\EOF -#define USE_LASTLOG 1 +echo "$ac_t""$am_cv_langinfo_codeset" 1>&6 + if test $am_cv_langinfo_codeset = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_LANGINFO_CODESET 1 EOF + fi +### checks for typedefs - -echo $ac_n "checking for utmp implementation""... $ac_c" 1>&6 -echo "configure:1981: checking for utmp implementation" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp'+set}'`\" = set"; then +echo $ac_n "checking for size_t in or ""... $ac_c" 1>&6 +echo "configure:2010: checking for size_t in or " >&5 +if eval "test \"`echo '$''{'cf_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cf_cv_have_utmp=no -for cf_header in utmpx utmp ; do -cf_utmp_includes=" + cat > conftest.$ac_ext < -#include <${cf_header}.h> -#define getutent getutxent -#ifdef USE_LASTLOG -#include /* may conflict with utmpx.h on Linux */ +#ifdef STDC_HEADERS +#include +#include #endif -" - cat > conftest.$ac_ext < int main() { -struct $cf_header x; - char *name = x.ut_name; /* utmp.h and compatible definitions */ - +size_t x ; return 0; } EOF -if { (eval echo configure:2006: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2029: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - cf_cv_have_utmp=$cf_header - break + cf_cv_type_size_t=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - - cat > conftest.$ac_ext <&6 +test $cf_cv_type_size_t = no && cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:2049: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include EOF -if { (eval echo configure:2025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - cf_cv_have_utmp=$cf_header - break - + ac_cv_header_stdc=yes else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no fi rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no fi rm -f conftest* -done fi -echo "$ac_t""$cf_cv_have_utmp" 1>&6 - -if test $cf_cv_have_utmp != no ; then - cat >> confdefs.h <<\EOF -#define HAVE_UTMP 1 +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* - test $cf_cv_have_utmp = utmpx && cat >> confdefs.h <<\EOF -#define UTMPX_FOR_UTMP 1 -EOF +fi - -if test $cf_cv_have_utmp != no ; then -echo $ac_n "checking if utmp.ut_host is declared""... $ac_c" 1>&6 -echo "configure:2055: checking if utmp.ut_host is declared" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_host'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : else - - cat > conftest.$ac_ext < conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } -#include -#include <${cf_cv_have_utmp}.h> -int main() { -struct $cf_cv_have_utmp x; char *y = &x.ut_host[0] -; return 0; } EOF -if { (eval echo configure:2070: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cf_cv_have_utmp_ut_host=yes +if { (eval echo configure:2129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_cv_have_utmp_ut_host=no + rm -fr conftest* + ac_cv_header_stdc=no fi -rm -f conftest* - +rm -fr conftest* fi -echo "$ac_t""$cf_cv_have_utmp_ut_host" 1>&6 -test $cf_cv_have_utmp_ut_host != no && cat >> confdefs.h <<\EOF -#define HAVE_UTMP_UT_HOST 1 +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 EOF fi - -if test $cf_cv_have_utmp != no ; then -echo $ac_n "checking if utmp.ut_name is declared""... $ac_c" 1>&6 -echo "configure:2093: checking if utmp.ut_name is declared" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_name'+set}'`\" = set"; then +echo $ac_n "checking for time_t""... $ac_c" 1>&6 +echo "configure:2153: checking for time_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_time_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cf_cv_have_utmp_ut_name=no -cf_utmp_includes=" + cat > conftest.$ac_ext < -#include <${cf_cv_have_utmp}.h> -#define getutent getutxent -#ifdef USE_LASTLOG -#include /* may conflict with utmpx.h on Linux */ +#if STDC_HEADERS +#include +#include #endif -" -for cf_header in ut_name ut_user ; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])time_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then rm -rf conftest* - cf_cv_have_utmp_ut_name=$cf_header - break + ac_cv_type_time_t=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_type_time_t=no fi rm -f conftest* -done fi - -echo "$ac_t""$cf_cv_have_utmp_ut_name" 1>&6 - -case $cf_cv_have_utmp_ut_name in #(vi -no) #(vi - { echo "configure: error: Cannot find declaration for ut.ut_name" 1>&2; exit 1; } - ;; -ut_user) - cat >> confdefs.h <<\EOF -#define ut_name ut_user +echo "$ac_t""$ac_cv_type_time_t" 1>&6 +if test $ac_cv_type_time_t = no; then + cat >> confdefs.h <<\EOF +#define time_t long EOF - ;; -esac fi + +### checks for library functions +for ac_func in \ + bcopy \ + gethostname \ + getlogin \ + memmove \ + strerror \ + strftime \ + tcgetattr \ + waitpid \ -if test $cf_cv_have_utmp != no ; then -echo $ac_n "checking for exit-status in $cf_cv_have_utmp""... $ac_c" 1>&6 -echo "configure:2149: checking for exit-status in $cf_cv_have_utmp" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xstatus'+set}'`\" = set"; then +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2199: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - -for cf_result in \ - ut_exit.__e_exit \ - ut_exit.e_exit \ - ut_exit.ut_e_exit \ - ut_exit.ut_exit -do -cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); -#include -#include <${cf_cv_have_utmp}.h> int main() { -struct $cf_cv_have_utmp x; long y = x.$cf_result = 0 + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + ; return 0; } EOF -if { (eval echo configure:2170: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_have_utmp_ut_xstatus=$cf_result - break + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cf_cv_have_utmp_ut_xstatus=no + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* -done - fi -echo "$ac_t""$cf_cv_have_utmp_ut_xstatus" 1>&6 -if test $cf_cv_have_utmp_ut_xstatus != no ; then - cat >> confdefs.h <<\EOF -#define HAVE_UTMP_UT_XSTATUS 1 +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <> confdefs.h <&6 fi +done - -if test $cf_cv_have_utmp != no ; then -echo $ac_n "checking if utmp.ut_xtime is declared""... $ac_c" 1>&6 -echo "configure:2201: checking if utmp.ut_xtime is declared" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xtime'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext < -#include <${cf_cv_have_utmp}.h> -int main() { -struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0 -; return 0; } -EOF -if { (eval echo configure:2216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cf_cv_have_utmp_ut_xtime=yes +echo $ac_n "checking for memmove""... $ac_c" 1>&6 +echo "configure:2253: checking for memmove" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char memmove(); -#include -#include <${cf_cv_have_utmp}.h> int main() { -struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_memmove) || defined (__stub___memmove) +choke me +#else +memmove(); +#endif + ; return 0; } EOF -if { (eval echo configure:2233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_have_utmp_ut_xtime=define + eval "ac_cv_func_memmove=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cf_cv_have_utmp_ut_xtime=no -fi -rm -f conftest* - + eval "ac_cv_func_memmove=no" fi rm -f conftest* - fi -echo "$ac_t""$cf_cv_have_utmp_ut_xtime" 1>&6 -if test $cf_cv_have_utmp_ut_xtime != no ; then - cat >> confdefs.h <<\EOF -#define HAVE_UTMP_UT_XTIME 1 -EOF - - if test $cf_cv_have_utmp_ut_xtime = define ; then - cat >> confdefs.h <<\EOF -#define ut_xtime ut_tv.tv_sec -EOF - - fi -fi -fi +if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 - -if test $cf_cv_have_utmp != no ; then -echo $ac_n "checking if utmp.ut_session is declared""... $ac_c" 1>&6 -echo "configure:2267: checking if utmp.ut_session is declared" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_session'+set}'`\" = set"; then +echo $ac_n "checking for bcopy""... $ac_c" 1>&6 +echo "configure:2300: checking for bcopy" >&5 +if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char bcopy(); -#include -#include <${cf_cv_have_utmp}.h> int main() { -struct $cf_cv_have_utmp x; long y = x.ut_session + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_bcopy) || defined (__stub___bcopy) +choke me +#else +bcopy(); +#endif + ; return 0; } EOF -if { (eval echo configure:2282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_have_utmp_ut_session=yes + eval "ac_cv_func_bcopy=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cf_cv_have_utmp_ut_session=no + eval "ac_cv_func_bcopy=no" fi rm -f conftest* - fi -echo "$ac_t""$cf_cv_have_utmp_ut_session" 1>&6 -if test $cf_cv_have_utmp_ut_session != no ; then - cat >> confdefs.h <<\EOF -#define HAVE_UTMP_UT_SESSION 1 -EOF - -fi -fi - - -echo $ac_n "checking if $cf_cv_have_utmp is SYSV flavor""... $ac_c" 1>&6 -echo "configure:2306: checking if $cf_cv_have_utmp is SYSV flavor" >&5 -if eval "test \"`echo '$''{'cf_cv_sysv_utmp'+set}'`\" = set"; then +if eval "test \"`echo '$ac_cv_func_'bcopy`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6 +echo "configure:2344: checking if bcopy does overlapping moves" >&5 +if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" -cat > conftest.$ac_ext < conftest.$ac_ext < -#include <${cf_cv_have_utmp}.h> int main() { - -struct $cf_cv_have_utmp x; - set${cf_prefix}ent (); - get${cf_prefix}id(&x); - put${cf_prefix}line(&x); - end${cf_prefix}ent(); -; return 0; } + static char data[] = "abcdefghijklmnopqrstuwwxyz"; + char temp[40]; + bcopy(data, temp, sizeof(data)); + bcopy(temp+10, temp, 15); + bcopy(temp+5, temp+15, 10); + exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); +} + EOF -if { (eval echo configure:2327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - cf_cv_sysv_utmp=yes +if { (eval echo configure:2366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + cf_cv_good_bcopy=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_cv_sysv_utmp=no + rm -fr conftest* + cf_cv_good_bcopy=no fi -rm -f conftest* - +rm -fr conftest* fi -echo "$ac_t""$cf_cv_sysv_utmp" 1>&6 -test $cf_cv_sysv_utmp = yes && cat >> confdefs.h <<\EOF -#define USE_SYSV_UTMP 1 -EOF - + +fi +echo "$ac_t""$cf_cv_good_bcopy" 1>&6 + +else + echo "$ac_t""no" 1>&6 +cf_cv_good_bcopy=no fi + if test "$cf_cv_good_bcopy" = yes ; then + cat >> confdefs.h <<\EOF +#define USE_OK_BCOPY 1 +EOF + + else + cat >> confdefs.h <<\EOF +#define USE_MY_MEMMOVE 1 +EOF -echo $ac_n "checking if you want to link with utempter""... $ac_c" 1>&6 -echo "configure:2350: checking if you want to link with utempter" >&5 + fi -# Check whether --with-utempter or --without-utempter was given. -if test "${with_utempter+set}" = set; then - withval="$with_utempter" - use_utempter=$withval -else - use_utempter=no fi -echo "$ac_t""$use_utempter" 1>&6 -if test "$use_utempter" = yes ; then - -echo $ac_n "checking if we can link with utempter library""... $ac_c" 1>&6 -echo "configure:2365: checking if we can link with utempter library" >&5 -if eval "test \"`echo '$''{'cf_cv_have_utempter'+set}'`\" = set"; then +# compute a reasonable value for $TERM to give tgetent(), since we may be +# running in 'screen', which sets $TERMCAP to a specific entry that is not +# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply +# discard $TERMCAP. +cf_TERMVAR=vt100 +test -n "$TERMCAP" && cf_TERMVAR="$TERM" +test -z "$cf_TERMVAR" && cf_TERMVAR=vt100 + +echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6 +echo "configure:2412: checking for full tgetent function" >&5 +if eval "test \"`echo '$''{'cf_cv_lib_tgetent'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cf_save_LIBS="$LIBS" -LIBS="-lutempter $LIBS" -cat > conftest.$ac_ext <&5 +else + cat > conftest.$ac_ext < - -int main() { - - addToUtmp("/dev/tty", 0, 1); - removeFromUtmp(); - -; return 0; } +/* terminfo implementations ignore the buffer argument, making it useless for + * the xterm application, which uses this information to make a new TERMCAP + * environment variable. + */ +int main() +{ + char buffer[1024]; + buffer[0] = 0; + tgetent(buffer, "$cf_TERMVAR"); + exit(buffer[0] == 0); } EOF -if { (eval echo configure:2385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - - cf_cv_have_utempter=yes +if { (eval echo configure:2441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&5 + if test -n "$cf_termlib" ; then + cf_cv_lib_tgetent="-l$cf_termlib" + else + cf_cv_lib_tgetent=yes + fi + break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - - cf_cv_have_utempter=no + rm -fr conftest* + echo "no, there is no termcap/tgetent in $cf_termlib" 1>&5 fi -rm -f conftest* -LIBS="$cf_save_LIBS" - +rm -fr conftest* fi -echo "$ac_t""$cf_cv_have_utempter" 1>&6 -if test "$cf_cv_have_utempter" = yes ; then - cat >> confdefs.h <<\EOF -#define USE_UTEMPTER 1 -EOF +done +LIBS="$cf_save_LIBS" - LIBS="-lutempter $LIBS" fi -fi +echo "$ac_t""$cf_cv_lib_tgetent" 1>&6 -### checks for external data +# If we found a working tgetent(), set LIBS and check for termcap.h. +# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should +# not have side effects other than setting the cache variable, because +# they are not executed when a cached value exists.) +if test "$cf_cv_lib_tgetent" != no ; then + test "$cf_cv_lib_tgetent" != yes && LIBS="$LIBS $cf_cv_lib_tgetent" + cat >> confdefs.h <<\EOF +#define USE_TERMCAP 1 +EOF + cat > conftest.$ac_ext <&6 -echo "configure:2416: checking if external errno is declared" >&5 -if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then +#include +int main() { + +#ifdef NCURSES_VERSION +make an error +#endif +; return 0; } +EOF +if { (eval echo configure:2488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cat >> confdefs.h <<\EOF +#define HAVE_TERMCAP_H 1 +EOF + +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +else + # If we didn't find a tgetent() that supports the buffer + # argument, look again to see whether we can find even + # a crippled one. A crippled tgetent() is still useful to + # validate values for the TERM environment variable given to + # child processes. + echo $ac_n "checking for partial tgetent function""... $ac_c" 1>&6 +echo "configure:2506: checking for partial tgetent function" >&5 +if eval "test \"`echo '$''{'cf_cv_lib_part_tgetent'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -#endif -#include -#include -#include int main() { -long x = (long) errno +tgetent(0, "$cf_TERMVAR") ; return 0; } EOF -if { (eval echo configure:2435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_dcl_errno=yes + echo "there is a terminfo/tgetent in $cf_termlib" 1>&5 + cf_cv_lib_part_tgetent="-l$cf_termlib" + break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_cv_dcl_errno=no fi rm -f conftest* - + done + LIBS="$cf_save_LIBS" + fi -echo "$ac_t""$cf_cv_dcl_errno" 1>&6 +echo "$ac_t""$cf_cv_lib_part_tgetent" 1>&6 -if test "$cf_cv_dcl_errno" = no ; then - -cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + if test "$cf_cv_lib_part_tgetent" != no ; then + LIBS="$LIBS $cf_cv_lib_part_tgetent" + for ac_hdr in termcap.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2545: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done - cat >> confdefs.h <> confdefs.h <<\EOF +#define USE_TERMINFO 1 EOF + fi fi -# It's possible (for near-UNIX clones) that the data doesn't exist -echo $ac_n "checking if external errno exists""... $ac_c" 1>&6 -echo "configure:2463: checking if external errno exists" >&5 -if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then +for ac_hdr in lastlog.h paths.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2596: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:2479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - cf_cv_have_errno=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - cf_cv_have_errno=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - fi - -echo "$ac_t""$cf_cv_have_errno" 1>&6 - -if test "$cf_cv_have_errno" = yes ; then - -cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >> confdefs.h <&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 fi +done - - - - -echo $ac_n "checking for tty group name""... $ac_c" 1>&6 -echo "configure:2509: checking for tty group name" >&5 -if eval "test \"`echo '$''{'cf_cv_tty_group_name'+set}'`\" = set"; then +echo $ac_n "checking for lastlog path""... $ac_c" 1>&6 +echo "configure:2633: checking for lastlog path" >&5 +if eval "test \"`echo '$''{'cf_cv_path_lastlog'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else +cat > conftest.$ac_ext <conftest.out - read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest conftest.out - read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest +#ifdef HAVE_LASTLOG_H +#include +#else +#ifdef HAVE_PATHS_H +#include +#endif +#endif +int main() { +char *path = _PATH_LASTLOG +; return 0; } +EOF +if { (eval echo configure:2654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_path_lastlog="_PATH_LASTLOG" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + if test -f /usr/adm/lastlog ; then + cf_cv_path_lastlog=/usr/adm/lastlog + else + cf_cv_path_lastlog=no fi - rm -f conftest.out - cf_cv_tty_group_name=$cf_grp -fi fi +rm -f conftest* -# If we cannot deduce the tty group, fall back on hardcoded cases - -if test -z "$cf_cv_tty_group_name" -then -case $host_os in #(vi -osf*) #(vi - cf_cv_tty_group_name="terminal" - ;; -*) - cf_cv_tty_group_name="unknown" - if ( egrep '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then - cf_cv_tty_group_name="tty" - fi - ;; -esac fi -fi +echo "$ac_t""$cf_cv_path_lastlog" 1>&6 +test $cf_cv_path_lastlog != no && cat >> confdefs.h <<\EOF +#define USE_LASTLOG 1 +EOF -echo "$ac_t""$cf_cv_tty_group_name" 1>&6 -cat >> confdefs.h <&6 -echo "configure:2574: checking if we may use $cf_cv_tty_group_name group" >&5 -if eval "test \"`echo '$''{'cf_cv_tty_group'+set}'`\" = set"; then +echo $ac_n "checking for utmp implementation""... $ac_c" 1>&6 +echo "configure:2681: checking for utmp implementation" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -cf_tty_name=`tty` -if test "$cf_tty_name" != "not a tty" -then -if test "$cross_compiling" = yes; then - cf_cv_tty_group=unknown + cf_cv_have_utmp=no +for cf_header in utmpx utmp ; do +cf_utmp_includes=" +#include +#include <${cf_header}.h> +#define getutent getutxent +#ifdef USE_LASTLOG +#include /* may conflict with utmpx.h on Linux */ +#endif +" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp=$cf_header + break else - cat > conftest.$ac_ext <&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + cat > conftest.$ac_ext < -#include -#include -#include -int main() -{ - struct stat sb; - struct group *ttygrp = getgrnam(TTY_GROUP_NAME); - char *name = ttyname(0); - - endgrent(); - if (ttygrp != 0 - && name != 0 - && stat(name, &sb) == 0 - && sb.st_gid != getgid() - && sb.st_gid == ttygrp->gr_gid) { - exit(0); - } - exit(1); -} +$cf_utmp_includes +int main() { +struct $cf_header x; + char *name = x.ut_user; /* utmpx.h must declare this */ +; return 0; } EOF -if { (eval echo configure:2611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - cf_cv_tty_group=yes +if { (eval echo configure:2725: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp=$cf_header + break + else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* - cf_cv_tty_group=no fi -rm -fr conftest* +rm -f conftest* fi +rm -f conftest* +done -elif test "$cross_compiling" = yes; then - cf_cv_tty_group=unknown -else - cf_cv_tty_group=yes fi -fi +echo "$ac_t""$cf_cv_have_utmp" 1>&6 -echo "$ac_t""$cf_cv_tty_group" 1>&6 -test $cf_cv_tty_group = yes && cat >> confdefs.h <<\EOF -#define USE_TTY_GROUP 1 +if test $cf_cv_have_utmp != no ; then + cat >> confdefs.h <<\EOF +#define HAVE_UTMP 1 EOF + test $cf_cv_have_utmp = utmpx && cat >> confdefs.h <<\EOF +#define UTMPX_FOR_UTMP 1 +EOF + +if test $cf_cv_have_utmp != no ; then +echo $ac_n "checking if utmp.ut_host is declared""... $ac_c" 1>&6 +echo "configure:2755: checking if utmp.ut_host is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_host'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> +int main() { +struct $cf_cv_have_utmp x; char *y = &x.ut_host[0] +; return 0; } +EOF +if { (eval echo configure:2770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_host=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_utmp_ut_host=no +fi +rm -f conftest* + +fi -echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:2641: checking for ${CC-cc} option to accept ANSI C" >&5 -if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then +echo "$ac_t""$cf_cv_have_utmp_ut_host" 1>&6 +test $cf_cv_have_utmp_ut_host != no && cat >> confdefs.h <<\EOF +#define HAVE_UTMP_UT_HOST 1 +EOF + +fi + + +if test $cf_cv_have_utmp != no ; then +echo $ac_n "checking if utmp.ut_name is declared""... $ac_c" 1>&6 +echo "configure:2793: checking if utmp.ut_name is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do + cf_cv_have_utmp_ut_name=no +cf_utmp_includes=" +#include +#include <${cf_cv_have_utmp}.h> +#define getutent getutxent +#ifdef USE_LASTLOG +#include /* may conflict with utmpx.h on Linux */ +#endif +" +for cf_header in ut_name ut_user ; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_name=$cf_header + break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done -for cf_add_cflags in $cf_arg -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` +fi - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes +echo "$ac_t""$cf_cv_have_utmp_ut_name" 1>&6 - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac +case $cf_cv_have_utmp_ut_name in #(vi +no) #(vi + { echo "configure: error: Cannot find declaration for ut.ut_name" 1>&2; exit 1; } ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` +ut_user) + cat >> confdefs.h <<\EOF +#define ut_name ut_user +EOF - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no ;; esac +fi + + +if test $cf_cv_have_utmp != no ; then +echo $ac_n "checking for exit-status in $cf_cv_have_utmp""... $ac_c" 1>&6 +echo "configure:2849: checking for exit-status in $cf_cv_have_utmp" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xstatus'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +for cf_result in \ + ut_exit.__e_exit \ + ut_exit.e_exit \ + ut_exit.ut_e_exit \ + ut_exit.ut_exit +do +cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> +int main() { +struct $cf_cv_have_utmp x; long y = x.$cf_result = 0 +; return 0; } +EOF +if { (eval echo configure:2870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_xstatus=$cf_result + break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_utmp_ut_xstatus=no +fi +rm -f conftest* done -if test -n "$cf_new_cflags" ; then +fi + +echo "$ac_t""$cf_cv_have_utmp_ut_xstatus" 1>&6 +if test $cf_cv_have_utmp_ut_xstatus != no ; then + cat >> confdefs.h <<\EOF +#define HAVE_UTMP_UT_XSTATUS 1 +EOF + + cat >> confdefs.h <&6 +echo "configure:2901: checking if utmp.ut_xtime is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xtime'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> +int main() { +struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0 +; return 0; } +EOF +if { (eval echo configure:2916: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_xtime=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> +int main() { +struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec +; return 0; } +EOF +if { (eval echo configure:2933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_xtime=define +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_utmp_ut_xtime=no +fi +rm -f conftest* + +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_have_utmp_ut_xtime" 1>&6 +if test $cf_cv_have_utmp_ut_xtime != no ; then + cat >> confdefs.h <<\EOF +#define HAVE_UTMP_UT_XTIME 1 +EOF + + if test $cf_cv_have_utmp_ut_xtime = define ; then + cat >> confdefs.h <<\EOF +#define ut_xtime ut_tv.tv_sec +EOF + + fi +fi fi -if test -n "$cf_new_cppflags" ; then - CPPFLAGS="$cf_new_cppflags $CPPFLAGS" +if test $cf_cv_have_utmp != no ; then +echo $ac_n "checking if utmp.ut_session is declared""... $ac_c" 1>&6 +echo "configure:2967: checking if utmp.ut_session is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_session'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> +int main() { +struct $cf_cv_have_utmp x; long y = x.ut_session +; return 0; } +EOF +if { (eval echo configure:2982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp_ut_session=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_utmp_ut_session=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_have_utmp_ut_session" 1>&6 +if test $cf_cv_have_utmp_ut_session != no ; then + cat >> confdefs.h <<\EOF +#define HAVE_UTMP_UT_SESSION 1 +EOF + +fi fi -if test -n "$cf_new_extra_cppflags" ; then - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - - - - cat > conftest.$ac_ext <&6 +echo "configure:3006: checking if $cf_cv_have_utmp is SYSV flavor" >&5 +if eval "test \"`echo '$''{'cf_cv_sysv_utmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" +cat > conftest.$ac_ext < +#include <${cf_cv_have_utmp}.h> int main() { - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);}; +struct $cf_cv_have_utmp x; + set${cf_prefix}ent (); + get${cf_prefix}id(&x); + put${cf_prefix}line(&x); + end${cf_prefix}ent(); ; return 0; } EOF -if { (eval echo configure:2753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - cf_cv_ansi_cc="$cf_arg"; break + cf_cv_sysv_utmp=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_sysv_utmp=no fi rm -f conftest* -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" fi -echo "$ac_t""$cf_cv_ansi_cc" 1>&6 - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_ansi_cc -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi +echo "$ac_t""$cf_cv_sysv_utmp" 1>&6 +test $cf_cv_sysv_utmp = yes && cat >> confdefs.h <<\EOF +#define USE_SYSV_UTMP 1 +EOF -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$cf_new_cppflags $CPPFLAGS" -fi -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" fi +echo $ac_n "checking if you want to link with utempter""... $ac_c" 1>&6 +echo "configure:3050: checking if you want to link with utempter" >&5 - +# Check whether --with-utempter or --without-utempter was given. +if test "${with_utempter+set}" = set; then + withval="$with_utempter" + use_utempter=$withval else - cat >> confdefs.h <<\EOF -#define CC_HAS_PROTOS 1 -EOF - -fi + use_utempter=no fi -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2852: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then +echo "$ac_t""$use_utempter" 1>&6 + +if test "$use_utempter" = yes ; then + +echo $ac_n "checking if we can link with utempter library""... $ac_c" 1>&6 +echo "configure:3065: checking if we can link with utempter library" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utempter'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < -/* Ultrix mips cc rejects this. */ -typedef int charset[2]; const charset x; -/* SunOS 4.1.1 cc rejects this. */ -char const *const *ccp; -char **p; -/* NEC SVR4.0.2 mips cc rejects this. */ -struct point {int x, y;}; -static struct point const zero = {0,0}; -/* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in an arm - of an if-expression whose if-part is not a constant expression */ -const char *g = "string"; -ccp = &g + (g ? g-g : 0); -/* HPUX 7.0 cc rejects these. */ -++ccp; -p = (char**) ccp; -ccp = (char const *const *) p; -{ /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; +int main() { - *t++ = 0; -} -{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; -} -{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; -} -{ /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} + addToUtmp("/dev/tty", 0, 1); + removeFromUtmp(); ; return 0; } EOF -if { (eval echo configure:2906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_c_const=yes + + cf_cv_have_utempter=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_c_const=no + + cf_cv_have_utempter=no fi rm -f conftest* +LIBS="$cf_save_LIBS" + fi -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const +echo "$ac_t""$cf_cv_have_utempter" 1>&6 +if test "$cf_cv_have_utempter" = yes ; then + cat >> confdefs.h <<\EOF +#define USE_UTEMPTER 1 EOF + LIBS="-lutempter $LIBS" fi -echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:2927: checking for Cygwin environment" >&5 -if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then +fi + +### checks for external data + + +echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6 +echo "configure:3116: checking if external errno is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < #endif -return __CYGWIN__; +#include +#include +#include +int main() { +long x = (long) errno ; return 0; } EOF -if { (eval echo configure:2943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_cygwin=yes + cf_cv_dcl_errno=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_cygwin=no + cf_cv_dcl_errno=no fi rm -f conftest* -rm -f conftest* + fi -echo "$ac_t""$ac_cv_cygwin" 1>&6 -CYGWIN= -test "$ac_cv_cygwin" = yes && CYGWIN=yes -echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:2960: checking for mingw32 environment" >&5 -if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then +echo "$ac_t""$cf_cv_dcl_errno" 1>&6 + +if test "$cf_cv_dcl_errno" = no ; then + +cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >> confdefs.h <&6 +echo "configure:3163: checking if external errno exists" >&5 +if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ac_cv_mingw32=yes + cf_cv_have_errno=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_mingw32=no + cf_cv_have_errno=no fi rm -f conftest* -rm -f conftest* + fi -echo "$ac_t""$ac_cv_mingw32" 1>&6 -MINGW32= -test "$ac_cv_mingw32" = yes && MINGW32=yes +echo "$ac_t""$cf_cv_have_errno" 1>&6 +if test "$cf_cv_have_errno" = yes ; then + +cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` -case $cf_cv_system_name in -os2*) - CFLAGS="$CFLAGS -Zmt" - CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" - CXXFLAGS="$CXXFLAGS -Zmt" - # autoconf's macro sets -Zexe and suffix both, which conflict:w - LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" - ac_cv_exeext=.exe - ;; -esac + cat >> confdefs.h <&6 -echo "configure:3004: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + + +echo $ac_n "checking for tty group name""... $ac_c" 1>&6 +echo "configure:3209: checking for tty group name" >&5 +if eval "test \"`echo '$''{'cf_cv_tty_group_name'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:3014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no + + +# If we are configuring as root, it is hard to get a clue about the tty group. +# But we'll guess based on how our connection is set up - assuming it is done +# properly. + +cf_uid=`id | sed -e 's/^^=*=//' -e 's/(.*$//'` +if test "$cf_uid" != 0 ; then +cf_cv_tty_group_name= +cf_tty_name=`tty` +test "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty +test -z "$cf_tty_name" && cf_tty_name=/dev/tty +if test -c "$cf_tty_name" +then + cf_option="-l -L" + + # Expect listing to have fields like this: + #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname + ls $cf_option $cf_tty_name >conftest.out + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest conftest.out + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest &6 -ac_exeext=$EXEEXT +# If we cannot deduce the tty group, fall back on hardcoded cases -echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:3035: checking for object suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then +if test -z "$cf_cv_tty_group_name" +then +case $host_os in #(vi +osf*) #(vi + cf_cv_tty_group_name="terminal" + ;; +*) + cf_cv_tty_group_name="unknown" + if ( egrep '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then + cf_cv_tty_group_name="tty" + fi + ;; +esac +fi + +fi + +echo "$ac_t""$cf_cv_tty_group_name" 1>&6 + +cat >> confdefs.h <&6 +echo "configure:3274: checking if we may use $cf_cv_tty_group_name group" >&5 +if eval "test \"`echo '$''{'cf_cv_tty_group'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - rm -f conftest* -echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:3041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done + +cf_tty_name=`tty` +if test "$cf_tty_name" != "not a tty" +then +if test "$cross_compiling" = yes; then + cf_cv_tty_group=unknown else - { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; } + cat > conftest.$ac_ext < +#include +#include +#include +int main() +{ + struct stat sb; + struct group *ttygrp = getgrnam(TTY_GROUP_NAME); + char *name = ttyname(0); + + endgrent(); + if (ttygrp != 0 + && name != 0 + && stat(name, &sb) == 0 + && sb.st_gid != getgid() + && sb.st_gid == ttygrp->gr_gid) { + exit(0); + } + exit(1); +} + +EOF +if { (eval echo configure:3311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + cf_cv_tty_group=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + cf_cv_tty_group=no fi -rm -f conftest* +rm -fr conftest* fi -echo "$ac_t""$ac_cv_objext" 1>&6 -OBJEXT=$ac_cv_objext -ac_objext=$ac_cv_objext - +elif test "$cross_compiling" = yes; then + cf_cv_tty_group=unknown +else + cf_cv_tty_group=yes +fi -PROG_EXT="$EXEEXT" +fi -test -n "$PROG_EXT" && cat >> confdefs.h <&6 +test $cf_cv_tty_group = yes && cat >> confdefs.h <<\EOF +#define USE_TTY_GROUP 1 EOF @@ -3066,12 +3337,12 @@ ### checks for system services and user specified options echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3070: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3341: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3087,7 +3358,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3091: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3110,13 +3381,13 @@ echo $ac_n "checking for POSIX wait functions""... $ac_c" 1>&6 -echo "configure:3114: checking for POSIX wait functions" >&5 +echo "configure:3385: checking for POSIX wait functions" >&5 if eval "test \"`echo '$''{'cf_cv_posix_wait'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -3134,7 +3405,7 @@ ; return 0; } EOF -if { (eval echo configure:3138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_posix_wait=yes else @@ -3156,13 +3427,13 @@ echo $ac_n "checking if external sys_nerr is declared""... $ac_c" 1>&6 -echo "configure:3160: checking if external sys_nerr is declared" >&5 +echo "configure:3431: checking if external sys_nerr is declared" >&5 if eval "test \"`echo '$''{'cf_cv_dcl_sys_nerr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_dcl_sys_nerr=yes else @@ -3203,13 +3474,13 @@ # It's possible (for near-UNIX clones) that the data doesn't exist echo $ac_n "checking if external sys_nerr exists""... $ac_c" 1>&6 -echo "configure:3207: checking if external sys_nerr exists" >&5 +echo "configure:3478: checking if external sys_nerr exists" >&5 if eval "test \"`echo '$''{'cf_cv_have_sys_nerr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_have_sys_nerr=yes else @@ -3248,13 +3519,13 @@ echo $ac_n "checking if external sys_errlist is declared""... $ac_c" 1>&6 -echo "configure:3252: checking if external sys_errlist is declared" >&5 +echo "configure:3523: checking if external sys_errlist is declared" >&5 if eval "test \"`echo '$''{'cf_cv_dcl_sys_errlist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_dcl_sys_errlist=yes else @@ -3295,13 +3566,13 @@ # It's possible (for near-UNIX clones) that the data doesn't exist echo $ac_n "checking if external sys_errlist exists""... $ac_c" 1>&6 -echo "configure:3299: checking if external sys_errlist exists" >&5 +echo "configure:3570: checking if external sys_errlist exists" >&5 if eval "test \"`echo '$''{'cf_cv_have_sys_errlist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_have_sys_errlist=yes else @@ -3341,14 +3612,14 @@ echo $ac_n "checking if we should define SYSV""... $ac_c" 1>&6 -echo "configure:3345: checking if we should define SYSV" >&5 +echo "configure:3616: checking if we should define SYSV" >&5 if eval "test \"`echo '$''{'cf_cv_sysv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_sysv=yes else @@ -3400,7 +3671,7 @@ echo $ac_n "checking for elf_begin in -lelf""... $ac_c" 1>&6 -echo "configure:3404: checking for elf_begin in -lelf" >&5 +echo "configure:3675: checking for elf_begin in -lelf" >&5 ac_lib_var=`echo elf'_'elf_begin | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3408,7 +3679,7 @@ ac_save_LIBS="$LIBS" LIBS="-lelf $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3436,13 +3707,13 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking if this is an SVR4 system""... $ac_c" 1>&6 -echo "configure:3440: checking if this is an SVR4 system" >&5 +echo "configure:3711: checking if this is an SVR4 system" >&5 if eval "test \"`echo '$''{'cf_cv_svr4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -3463,7 +3734,7 @@ ; return 0; } EOF -if { (eval echo configure:3467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_svr4=yes else @@ -3487,70 +3758,12 @@ EOF - -echo $ac_n "checking if we must define _GNU_SOURCE""... $ac_c" 1>&6 -echo "configure:3493: checking if we must define _GNU_SOURCE" >&5 -if eval "test \"`echo '$''{'cf_cv_gnu_source'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - -cat > conftest.$ac_ext < -int main() { - -#ifndef _XOPEN_SOURCE -make an error -#endif -; return 0; } -EOF -if { (eval echo configure:3509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cf_cv_gnu_source=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - cat > conftest.$ac_ext < -int main() { - -#ifdef _XOPEN_SOURCE -make an error -#endif -; return 0; } -EOF -if { (eval echo configure:3529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - cf_cv_gnu_source=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cf_cv_gnu_source=yes -fi -rm -f conftest* - CPPFLAGS="$cf_save" - -fi -rm -f conftest* - -fi - -echo "$ac_t""$cf_cv_gnu_source" 1>&6 -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - # If we find X, set shell vars x_includes and x_libraries to the # paths, otherwise set no_x=yes. # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:3554: checking for X" >&5 +echo "configure:3767: checking for X" >&5 # Check whether --with-x or --without-x was given. @@ -3613,12 +3826,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3687,14 +3900,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -3800,17 +4013,17 @@ case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:3804: checking whether -R must be followed by a space" >&5 +echo "configure:4017: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -3826,14 +4039,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -3865,7 +4078,7 @@ # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:3869: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:4082: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3873,7 +4086,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3906,7 +4119,7 @@ if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:3910: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:4123: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3914,7 +4127,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3954,12 +4167,12 @@ # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:3958: checking for gethostbyname" >&5 +echo "configure:4171: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -4003,7 +4216,7 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4007: checking for gethostbyname in -lnsl" >&5 +echo "configure:4220: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4011,7 +4224,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4052,12 +4265,12 @@ # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:4056: checking for connect" >&5 +echo "configure:4269: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -4101,7 +4314,7 @@ if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:4105: checking for connect in -lsocket" >&5 +echo "configure:4318: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4109,7 +4322,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4144,12 +4357,12 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:4148: checking for remove" >&5 +echo "configure:4361: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -4193,7 +4406,7 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:4197: checking for remove in -lposix" >&5 +echo "configure:4410: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4201,7 +4414,7 @@ ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4236,12 +4449,12 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:4240: checking for shmat" >&5 +echo "configure:4453: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -4285,7 +4498,7 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:4289: checking for shmat in -lipc" >&5 +echo "configure:4502: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4293,7 +4506,7 @@ ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4337,7 +4550,7 @@ # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:4341: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:4554: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4345,7 +4558,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4471,14 +4684,14 @@ if test "$cf_check_cflags" != "$CFLAGS" ; then cat > conftest.$ac_ext < int main() { printf("Hello world"); ; return 0; } EOF -if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then : else echo "configure: failed program was:" >&5 @@ -4497,12 +4710,12 @@ echo $ac_n "checking for XOpenDisplay""... $ac_c" 1>&6 -echo "configure:4501: checking for XOpenDisplay" >&5 +echo "configure:4714: checking for XOpenDisplay" >&5 if eval "test \"`echo '$''{'ac_cv_func_XOpenDisplay'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_XOpenDisplay=yes" else @@ -4544,7 +4757,7 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:4548: checking for XOpenDisplay in -lX11" >&5 +echo "configure:4761: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4552,7 +4765,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4587,12 +4800,12 @@ echo $ac_n "checking for XtAppInitialize""... $ac_c" 1>&6 -echo "configure:4591: checking for XtAppInitialize" >&5 +echo "configure:4804: checking for XtAppInitialize" >&5 if eval "test \"`echo '$''{'ac_cv_func_XtAppInitialize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_XtAppInitialize=yes" else @@ -4634,7 +4847,7 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6 -echo "configure:4638: checking for XtAppInitialize in -lXt" >&5 +echo "configure:4851: checking for XtAppInitialize in -lXt" >&5 ac_lib_var=`echo Xt'_'XtAppInitialize | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4642,7 +4855,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4696,17 +4909,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4700: checking for $ac_hdr" >&5 +echo "configure:4913: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4737,7 +4950,7 @@ cf_x_athena=${cf_x_athena-Xaw} echo $ac_n "checking if you want to link with Xaw 3d library""... $ac_c" 1>&6 -echo "configure:4741: checking if you want to link with Xaw 3d library" >&5 +echo "configure:4954: checking if you want to link with Xaw 3d library" >&5 withval= # Check whether --with-Xaw3d or --without-Xaw3d was given. @@ -4754,7 +4967,7 @@ fi echo $ac_n "checking if you want to link with neXT Athena library""... $ac_c" 1>&6 -echo "configure:4758: checking if you want to link with neXT Athena library" >&5 +echo "configure:4971: checking if you want to link with neXT Athena library" >&5 withval= # Check whether --with-neXtaw or --without-neXtaw was given. @@ -4771,7 +4984,7 @@ fi echo $ac_n "checking if you want to link with Athena-Plus library""... $ac_c" 1>&6 -echo "configure:4775: checking if you want to link with Athena-Plus library" >&5 +echo "configure:4988: checking if you want to link with Athena-Plus library" >&5 withval= # Check whether --with-XawPlus or --without-XawPlus was given. @@ -4788,7 +5001,7 @@ fi echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6 -echo "configure:4792: checking for XextCreateExtension in -lXext" >&5 +echo "configure:5005: checking for XextCreateExtension in -lXext" >&5 ac_lib_var=`echo Xext'_'XextCreateExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4796,7 +5009,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4846,13 +5059,13 @@ if test $cf_path != default ; then CPPFLAGS="-I$cf_path/include $cf_save" echo $ac_n "checking for $cf_test in $cf_path""... $ac_c" 1>&6 -echo "configure:4850: checking for $cf_test in $cf_path" >&5 +echo "configure:5063: checking for $cf_test in $cf_path" >&5 else echo $ac_n "checking for $cf_test""... $ac_c" 1>&6 -echo "configure:4853: checking for $cf_test" >&5 +echo "configure:5066: checking for $cf_test" >&5 fi cat > conftest.$ac_ext < @@ -4861,7 +5074,7 @@ ; return 0; } EOF -if { (eval echo configure:4865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_result=yes else @@ -4908,23 +5121,23 @@ if test $cf_path != default ; then LIBS="-L$cf_path/lib $cf_lib $LIBS" echo $ac_n "checking for $cf_lib in $cf_path""... $ac_c" 1>&6 -echo "configure:4912: checking for $cf_lib in $cf_path" >&5 +echo "configure:5125: checking for $cf_lib in $cf_path" >&5 else LIBS="$cf_lib $LIBS" echo $ac_n "checking for $cf_test in $cf_lib""... $ac_c" 1>&6 -echo "configure:4916: checking for $cf_test in $cf_lib" >&5 +echo "configure:5129: checking for $cf_test in $cf_lib" >&5 fi cf_SAVE="$LIBS" LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_result=yes else @@ -4961,13 +5174,13 @@ echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6 -echo "configure:4965: checking for declaration of fd_set" >&5 +echo "configure:5178: checking for declaration of fd_set" >&5 if eval "test \"`echo '$''{'cf_cv_type_fd_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo "trying sys/types alone" 1>&5 cat > conftest.$ac_ext < @@ -4975,7 +5188,7 @@ fd_set x ; return 0; } EOF -if { (eval echo configure:4979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=sys/types.h else @@ -4984,7 +5197,7 @@ rm -rf conftest* echo "trying X11/Xpoll.h" 1>&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=X11/Xpoll.h else @@ -5003,7 +5216,7 @@ rm -rf conftest* echo "trying sys/select.h" 1>&5 cat > conftest.$ac_ext < @@ -5012,7 +5225,7 @@ fd_set x ; return 0; } EOF -if { (eval echo configure:5016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_type_fd_set=sys/select.h else @@ -5038,13 +5251,13 @@ echo $ac_n "checking for IRIX 6.5 baud-rate redefinitions""... $ac_c" 1>&6 -echo "configure:5042: checking for IRIX 6.5 baud-rate redefinitions" >&5 +echo "configure:5255: checking for IRIX 6.5 baud-rate redefinitions" >&5 if eval "test \"`echo '$''{'cf_cv_termio_c_ispeed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5057,7 +5270,7 @@ ; return 0; } EOF -if { (eval echo configure:5061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_termio_c_ispeed=yes @@ -5085,7 +5298,7 @@ case $host_os in #(vi netbsd*) # 2004/8/15 - revisit this if/when grantpt is known to work. echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:5089: checking for openpty in -lutil" >&5 +echo "configure:5302: checking for openpty in -lutil" >&5 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5093,7 +5306,7 @@ ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5136,12 +5349,12 @@ for ac_func in grantpt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5140: checking for $ac_func" >&5 +echo "configure:5353: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5186,7 +5399,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:5190: checking for openpty in -lutil" >&5 +echo "configure:5403: checking for openpty in -lutil" >&5 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5194,7 +5407,7 @@ ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5241,7 +5454,7 @@ # Extract the first word of "xterm", so it can be a program name with args. set dummy xterm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5245: checking for $ac_word" >&5 +echo "configure:5458: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XTERM_PATH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5276,13 +5489,13 @@ echo $ac_n "checking for XKB Bell extension""... $ac_c" 1>&6 -echo "configure:5280: checking for XKB Bell extension" >&5 +echo "configure:5493: checking for XKB Bell extension" >&5 if eval "test \"`echo '$''{'cf_cv_xkb_bell_ext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* has the prototype */ @@ -5298,7 +5511,7 @@ ; return 0; } EOF -if { (eval echo configure:5302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_xkb_bell_ext=yes else @@ -5321,12 +5534,12 @@ for ac_func in Xutf8LookupString do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5325: checking for $ac_func" >&5 +echo "configure:5538: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5380,7 +5593,7 @@ echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6 -echo "configure:5384: checking if we should use imake to help" >&5 +echo "configure:5597: checking if we should use imake to help" >&5 # Check whether --enable-imake or --disable-imake was given. if test "${enable_imake+set}" = set; then @@ -5405,7 +5618,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5409: checking for $ac_word" >&5 +echo "configure:5622: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_IMAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5561,6 +5774,16 @@ fi fi +# Some imake configurations define PROJECTROOT with an empty value. Remove +# the empty definition. +case $IMAKE_CFLAGS in +*-DPROJECTROOT=/*) + ;; +*) + IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[ ], ,"` + ;; +esac + test -n "$verbose" && echo " IMAKE_CFLAGS $IMAKE_CFLAGS" 1>&6 test -n "$verbose" && echo " IMAKE_LOADFLAGS $IMAKE_LOADFLAGS" 1>&6 @@ -5745,7 +5968,7 @@ echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6 -echo "configure:5749: checking for default terminal-id" >&5 +echo "configure:5972: checking for default terminal-id" >&5 # Check whether --with-terminal-id or --without-terminal-id was given. if test "${with_terminal_id+set}" = set; then @@ -5766,7 +5989,7 @@ echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6 -echo "configure:5770: checking for default terminal-type" >&5 +echo "configure:5993: checking for default terminal-type" >&5 # Check whether --with-terminal-type or --without-terminal-type was given. if test "${with_terminal_type+set}" = set; then @@ -5783,7 +6006,7 @@ echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6 -echo "configure:5787: checking for private terminfo-directory" >&5 +echo "configure:6010: checking for private terminfo-directory" >&5 # Check whether --with-own-terminfo or --without-own-terminfo was given. if test "${with_own_terminfo+set}" = set; then @@ -5824,7 +6047,7 @@ echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6 -echo "configure:5828: checking if you want active-icons" >&5 +echo "configure:6051: checking if you want active-icons" >&5 # Check whether --enable-active-icon or --disable-active-icon was given. if test "${enable_active_icon+set}" = set; then @@ -5850,7 +6073,7 @@ fi echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6 -echo "configure:5854: checking if you want ANSI color" >&5 +echo "configure:6077: checking if you want ANSI color" >&5 # Check whether --enable-ansi-color or --disable-ansi-color was given. if test "${enable_ansi_color+set}" = set; then @@ -5876,7 +6099,7 @@ if test "$enable_ansi_color" = yes ; then echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6 -echo "configure:5880: checking if you want 16 colors like aixterm" >&5 +echo "configure:6103: checking if you want 16 colors like aixterm" >&5 # Check whether --enable-16-color or --disable-16-color was given. if test "${enable_16_color+set}" = set; then @@ -5900,7 +6123,7 @@ echo $ac_n "checking if you want 256 colors""... $ac_c" 1>&6 -echo "configure:5904: checking if you want 256 colors" >&5 +echo "configure:6127: checking if you want 256 colors" >&5 # Check whether --enable-256-color or --disable-256-color was given. if test "${enable_256_color+set}" = set; then @@ -5927,7 +6150,7 @@ else echo $ac_n "checking if you want 88 colors""... $ac_c" 1>&6 -echo "configure:5931: checking if you want 88 colors" >&5 +echo "configure:6154: checking if you want 88 colors" >&5 # Check whether --enable-88-color or --disable-88-color was given. if test "${enable_88_color+set}" = set; then @@ -5958,7 +6181,7 @@ fi echo $ac_n "checking if you want blinking cursor""... $ac_c" 1>&6 -echo "configure:5962: checking if you want blinking cursor" >&5 +echo "configure:6185: checking if you want blinking cursor" >&5 # Check whether --enable-blink-cursor or --disable-blink-cursor was given. if test "${enable_blink_cursor+set}" = set; then @@ -5982,7 +6205,7 @@ echo $ac_n "checking if you want to ignore Linux's broken palette-strings""... $ac_c" 1>&6 -echo "configure:5986: checking if you want to ignore Linux's broken palette-strings" >&5 +echo "configure:6209: checking if you want to ignore Linux's broken palette-strings" >&5 case $host_os in #(vi linux*) @@ -6021,7 +6244,7 @@ fi echo $ac_n "checking if you want to allow broken string-terminators""... $ac_c" 1>&6 -echo "configure:6025: checking if you want to allow broken string-terminators" >&5 +echo "configure:6248: checking if you want to allow broken string-terminators" >&5 # Check whether --enable-broken-st or --disable-broken-st was given. if test "${enable_broken_st+set}" = set; then @@ -6045,7 +6268,7 @@ echo $ac_n "checking if you want printable 128-159""... $ac_c" 1>&6 -echo "configure:6049: checking if you want printable 128-159" >&5 +echo "configure:6272: checking if you want printable 128-159" >&5 # Check whether --enable-c1-print or --disable-c1-print was given. if test "${enable_c1_print+set}" = set; then @@ -6071,7 +6294,7 @@ if test "$enable_ansi_color" = yes ; then echo $ac_n "checking if you want bold colors mapped like IBM PC""... $ac_c" 1>&6 -echo "configure:6075: checking if you want bold colors mapped like IBM PC" >&5 +echo "configure:6298: checking if you want bold colors mapped like IBM PC" >&5 # Check whether --enable-bold-color or --disable-bold-color was given. if test "${enable_bold_color+set}" = set; then @@ -6095,7 +6318,7 @@ echo $ac_n "checking if you want separate color-classes""... $ac_c" 1>&6 -echo "configure:6099: checking if you want separate color-classes" >&5 +echo "configure:6322: checking if you want separate color-classes" >&5 # Check whether --enable-color-class or --disable-color-class was given. if test "${enable_color_class+set}" = set; then @@ -6119,7 +6342,7 @@ echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6 -echo "configure:6123: checking if you want color-mode enabled by default" >&5 +echo "configure:6346: checking if you want color-mode enabled by default" >&5 # Check whether --enable-color-mode or --disable-color-mode was given. if test "${enable_color_mode+set}" = set; then @@ -6145,7 +6368,7 @@ fi echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6 -echo "configure:6149: checking if you want support for color highlighting" >&5 +echo "configure:6372: checking if you want support for color highlighting" >&5 # Check whether --enable-highlighting or --disable-highlighting was given. if test "${enable_highlighting+set}" = set; then @@ -6169,7 +6392,7 @@ echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6 -echo "configure:6173: checking if you want support for doublesize characters" >&5 +echo "configure:6396: checking if you want support for doublesize characters" >&5 # Check whether --enable-doublechars or --disable-doublechars was given. if test "${enable_doublechars+set}" = set; then @@ -6193,7 +6416,7 @@ echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6 -echo "configure:6197: checking if you want fallback-support for box characters" >&5 +echo "configure:6420: checking if you want fallback-support for box characters" >&5 # Check whether --enable-boxchars or --disable-boxchars was given. if test "${enable_boxchars+set}" = set; then @@ -6217,7 +6440,7 @@ echo $ac_n "checking if you want to use FreeType library""... $ac_c" 1>&6 -echo "configure:6221: checking if you want to use FreeType library" >&5 +echo "configure:6444: checking if you want to use FreeType library" >&5 # Check whether --enable-freetype or --disable-freetype was given. if test "${enable_freetype+set}" = set; then @@ -6241,7 +6464,7 @@ # Extract the first word of "xft-config", so it can be a program name with args. set dummy xft-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6245: checking for $ac_word" >&5 +echo "configure:6468: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_FREETYPE_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6279,7 +6502,7 @@ # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6283: checking for $ac_word" >&5 +echo "configure:6506: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_FREETYPE_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6327,7 +6550,7 @@ else echo $ac_n "checking for X FreeType headers""... $ac_c" 1>&6 -echo "configure:6331: checking for X FreeType headers" >&5 +echo "configure:6554: checking for X FreeType headers" >&5 if eval "test \"`echo '$''{'cf_cv_x_freetype_incs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6351,7 +6574,7 @@ else echo $ac_n "checking for X FreeType libraries""... $ac_c" 1>&6 -echo "configure:6355: checking for X FreeType libraries" >&5 +echo "configure:6578: checking for X FreeType libraries" >&5 if eval "test \"`echo '$''{'cf_cv_x_freetype_libs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6366,7 +6589,7 @@ CPPFLAGS="$cf_cv_x_freetype_incs $CPPFLAGS" cat > conftest.$ac_ext < @@ -6378,7 +6601,7 @@ ; return 0; } EOF -if { (eval echo configure:6382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then : else echo "configure: failed program was:" >&5 @@ -6491,7 +6714,7 @@ fi echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6 -echo "configure:6495: checking if you want support for HP-style function keys" >&5 +echo "configure:6718: checking if you want support for HP-style function keys" >&5 # Check whether --enable-hp-fkeys or --disable-hp-fkeys was given. if test "${enable_hp_fkeys+set}" = set; then @@ -6517,7 +6740,7 @@ fi echo $ac_n "checking if you want support for SCO-style function keys""... $ac_c" 1>&6 -echo "configure:6521: checking if you want support for SCO-style function keys" >&5 +echo "configure:6744: checking if you want support for SCO-style function keys" >&5 # Check whether --enable-sco-fkeys or --disable-sco-fkeys was given. if test "${enable_sco_fkeys+set}" = set; then @@ -6543,7 +6766,7 @@ fi echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6 -echo "configure:6547: checking if you want support for internationalization" >&5 +echo "configure:6770: checking if you want support for internationalization" >&5 # Check whether --enable-i18n or --disable-i18n was given. if test "${enable_i18n+set}" = set; then @@ -6569,7 +6792,7 @@ fi echo $ac_n "checking if you want support for initial-erase setup""... $ac_c" 1>&6 -echo "configure:6573: checking if you want support for initial-erase setup" >&5 +echo "configure:6796: checking if you want support for initial-erase setup" >&5 # Check whether --enable-initial-erase or --disable-initial-erase was given. if test "${enable_initial_erase+set}" = set; then @@ -6595,7 +6818,7 @@ fi echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6 -echo "configure:6599: checking if you want support for input-method" >&5 +echo "configure:6822: checking if you want support for input-method" >&5 # Check whether --enable-input-method or --disable-input-method was given. if test "${enable_input_method+set}" = set; then @@ -6615,13 +6838,13 @@ echo "$ac_t""$enable_ximp" 1>&6 echo $ac_n "checking if X libraries support input-method""... $ac_c" 1>&6 -echo "configure:6619: checking if X libraries support input-method" >&5 +echo "configure:6842: checking if X libraries support input-method" >&5 if eval "test \"`echo '$''{'cf_cv_input_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -6648,7 +6871,7 @@ ; return 0; } EOF -if { (eval echo configure:6652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cf_cv_input_method=yes else @@ -6671,7 +6894,7 @@ fi echo $ac_n "checking if you want support for load-vt-fonts""... $ac_c" 1>&6 -echo "configure:6675: checking if you want support for load-vt-fonts" >&5 +echo "configure:6898: checking if you want support for load-vt-fonts" >&5 # Check whether --enable-load-vt-fonts or --disable-load-vt-fonts was given. if test "${enable_load_vt_fonts+set}" = set; then @@ -6697,7 +6920,7 @@ fi echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6 -echo "configure:6701: checking if you want support for logging" >&5 +echo "configure:6924: checking if you want support for logging" >&5 # Check whether --enable-logging or --disable-logging was given. if test "${enable_logging+set}" = set; then @@ -6721,7 +6944,7 @@ EOF echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6 -echo "configure:6725: checking if you want to allow logging via a pipe" >&5 +echo "configure:6948: checking if you want to allow logging via a pipe" >&5 # Check whether --enable-logfile-exec or --disable-logfile-exec was given. if test "${enable_logfile_exec+set}" = set; then @@ -6748,7 +6971,7 @@ fi echo $ac_n "checking if you want support for iconify/maximize translations""... $ac_c" 1>&6 -echo "configure:6752: checking if you want support for iconify/maximize translations" >&5 +echo "configure:6975: checking if you want support for iconify/maximize translations" >&5 # Check whether --enable-maximize or --disable-maximize was given. if test "${enable_maximize+set}" = set; then @@ -6772,7 +6995,7 @@ echo $ac_n "checking if you want NumLock to override keyboard tables""... $ac_c" 1>&6 -echo "configure:6776: checking if you want NumLock to override keyboard tables" >&5 +echo "configure:6999: checking if you want NumLock to override keyboard tables" >&5 # Check whether --enable-num-lock or --disable-num-lock was given. if test "${enable_num_lock+set}" = set; then @@ -6796,7 +7019,7 @@ echo $ac_n "checking if you want support for pty-handshaking""... $ac_c" 1>&6 -echo "configure:6800: checking if you want support for pty-handshaking" >&5 +echo "configure:7023: checking if you want support for pty-handshaking" >&5 # Check whether --enable-pty-handshake or --disable-pty-handshake was given. @@ -6828,7 +7051,7 @@ fi echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6 -echo "configure:6832: checking if you want support for right-scrollbar" >&5 +echo "configure:7055: checking if you want support for right-scrollbar" >&5 # Check whether --enable-rightbar or --disable-rightbar was given. if test "${enable_rightbar+set}" = set; then @@ -6854,7 +7077,7 @@ fi echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6 -echo "configure:6858: checking if you want check for redundant name-change" >&5 +echo "configure:7081: checking if you want check for redundant name-change" >&5 # Check whether --enable-samename or --disable-samename was given. if test "${enable_samename+set}" = set; then @@ -6878,7 +7101,7 @@ echo $ac_n "checking if you want support for session management""... $ac_c" 1>&6 -echo "configure:6882: checking if you want support for session management" >&5 +echo "configure:7105: checking if you want support for session management" >&5 # Check whether --enable-session-mgt or --disable-session-mgt was given. if test "${enable_session_mgt+set}" = set; then @@ -6902,7 +7125,7 @@ echo $ac_n "checking if you want to use termcap-query/report""... $ac_c" 1>&6 -echo "configure:6906: checking if you want to use termcap-query/report" >&5 +echo "configure:7129: checking if you want to use termcap-query/report" >&5 # Check whether --enable-tcap-query or --disable-tcap-query was given. if test "${enable_tcap_query+set}" = set; then @@ -6926,7 +7149,7 @@ echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6 -echo "configure:6930: checking if you want support for tek4014" >&5 +echo "configure:7153: checking if you want support for tek4014" >&5 # Check whether --enable-tek4014 or --disable-tek4014 was given. if test "${enable_tek4014+set}" = set; then @@ -6956,7 +7179,7 @@ fi echo $ac_n "checking if you want pulldown menus with a toolbar""... $ac_c" 1>&6 -echo "configure:6960: checking if you want pulldown menus with a toolbar" >&5 +echo "configure:7183: checking if you want pulldown menus with a toolbar" >&5 # Check whether --enable-toolbar or --disable-toolbar was given. if test "${enable_toolbar+set}" = set; then @@ -6982,7 +7205,7 @@ fi echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6 -echo "configure:6986: checking if you want VT52 emulation" >&5 +echo "configure:7209: checking if you want VT52 emulation" >&5 # Check whether --enable-vt52 or --disable-vt52 was given. if test "${enable_vt52+set}" = set; then @@ -7005,8 +7228,34 @@ EOF +echo $ac_n "checking if you want to use mini-luit/Latin9 built-in support""... $ac_c" 1>&6 +echo "configure:7233: checking if you want to use mini-luit/Latin9 built-in support" >&5 + +# Check whether --enable-mini-luit or --disable-mini-luit was given. +if test "${enable_mini_luit+set}" = set; then + enableval="$enable_mini_luit" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_mini_luit=yes + else + enable_mini_luit=no + fi +else + enableval=no + enable_mini_luit=no + +fi + +echo "$ac_t""$enable_mini_luit" 1>&6 +if test "$enable_mini_luit" = yes ; then + cat >> confdefs.h <<\EOF +#define OPT_MINI_LUIT 1 +EOF + +fi + echo $ac_n "checking if you want to use luit""... $ac_c" 1>&6 -echo "configure:7010: checking if you want to use luit" >&5 +echo "configure:7259: checking if you want to use luit" >&5 # Check whether --enable-luit or --disable-luit was given. if test "${enable_luit+set}" = set; then @@ -7015,11 +7264,11 @@ if test "$enableval" != "no" ; then enable_luit=yes else - enable_luit=no + enable_luit=$enable_mini_luit fi else enableval=no - enable_luit=no + enable_luit=$enable_mini_luit fi @@ -7032,7 +7281,7 @@ fi echo $ac_n "checking if you want wide-character support""... $ac_c" 1>&6 -echo "configure:7036: checking if you want wide-character support" >&5 +echo "configure:7285: checking if you want wide-character support" >&5 # Check whether --enable-wide-chars or --disable-wide-chars was given. if test "${enable_wide_chars+set}" = set; then @@ -7061,7 +7310,7 @@ fi echo $ac_n "checking if you want dynamic-abbreviation support""... $ac_c" 1>&6 -echo "configure:7065: checking if you want dynamic-abbreviation support" >&5 +echo "configure:7314: checking if you want dynamic-abbreviation support" >&5 # Check whether --enable-dec-locator or --disable-dec-locator was given. if test "${enable_dec_locator+set}" = set; then @@ -7087,7 +7336,7 @@ fi echo $ac_n "checking if you want DECterm Locator support""... $ac_c" 1>&6 -echo "configure:7091: checking if you want DECterm Locator support" >&5 +echo "configure:7340: checking if you want DECterm Locator support" >&5 # Check whether --enable-dec-locator or --disable-dec-locator was given. if test "${enable_dec_locator+set}" = set; then @@ -7113,7 +7362,7 @@ fi echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6 -echo "configure:7117: checking if you want -ziconbeep option" >&5 +echo "configure:7366: checking if you want -ziconbeep option" >&5 # Check whether --enable-ziconbeep or --disable-ziconbeep was given. if test "${enable_ziconbeep+set}" = set; then @@ -7140,7 +7389,7 @@ echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6 -echo "configure:7144: checking if you want debugging traces" >&5 +echo "configure:7393: checking if you want debugging traces" >&5 # Check whether --enable-trace or --disable-trace was given. if test "${enable_trace+set}" = set; then @@ -7169,7 +7418,7 @@ echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6 -echo "configure:7173: checking if you want to see long compiling messages" >&5 +echo "configure:7422: checking if you want to see long compiling messages" >&5 # Check whether --enable-echo or --disable-echo was given. if test "${enable_echo+set}" = set; then @@ -7213,7 +7462,7 @@ echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6 -echo "configure:7217: checking if you want magic cookie emulation" >&5 +echo "configure:7466: checking if you want magic cookie emulation" >&5 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given. if test "${enable_xmc_glitch+set}" = set; then @@ -7242,7 +7491,7 @@ if test -n "$GCC" ; then echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6 -echo "configure:7246: checking if you want to turn on gcc warnings" >&5 +echo "configure:7495: checking if you want to turn on gcc warnings" >&5 # Check whether --enable-warnings or --disable-warnings was given. if test "${enable_warnings+set}" = set; then @@ -7282,9 +7531,9 @@ if test "$GCC" = yes then echo "checking for $CC __attribute__ directives" 1>&6 -echo "configure:7286: checking for $CC __attribute__ directives" >&5 +echo "configure:7535: checking for $CC __attribute__ directives" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:7575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6 cat conftest.h >>confdefs.h fi @@ -7338,7 +7587,7 @@ GCC_VERSION=none if test "$GCC" = yes ; then echo $ac_n "checking version of $CC""... $ac_c" 1>&6 -echo "configure:7342: checking version of $CC" >&5 +echo "configure:7591: checking version of $CC" >&5 GCC_VERSION="`${CC} --version|sed -e '2,$d' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" test -z "$GCC_VERSION" && GCC_VERSION=unknown echo "$ac_t""$GCC_VERSION" 1>&6 @@ -7349,11 +7598,11 @@ if test "$GCC" = yes then cat > conftest.$ac_ext <&6 -echo "configure:7357: checking for $CC warning options" >&5 +echo "configure:7606: checking for $CC warning options" >&5 cf_save_CFLAGS="$CFLAGS" EXTRA_CFLAGS="-W -Wall" cf_warn_CONST="" @@ -7369,10 +7618,10 @@ Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST + Wundef $cf_warn_CONST do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo configure:7376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:7625: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6 case $cf_opt in #(vi Wcast-qual) #(vi @@ -7565,6 +7814,7 @@ s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@LINT@%$LINT%g s%@EXTRA_CPPFLAGS@%$EXTRA_CPPFLAGS%g s%@EXEEXT@%$EXEEXT%g s%@OBJEXT@%$OBJEXT%g diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/configure.in x11r682/xc/programs/xterm/configure.in --- xc/programs/xterm/configure.in 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/configure.in 2005-01-12 22:45:10.000000000 +0100 @@ -1,6 +1,6 @@ -dnl $XTermId: configure.in,v 1.170 2004/08/15 21:07:59 tom Exp $ +dnl $XTermId: configure.in,v 1.175 2004/12/01 01:27:46 tom Exp $ dnl -dnl $XFree86: xc/programs/xterm/configure.in,v 3.66 2004/08/15 21:07:59 dickey Exp $ +dnl $XFree86: xc/programs/xterm/configure.in,v 3.67 2004/12/01 01:27:46 dickey Exp $ dnl dnl --------------------------------------------------------------------------- dnl @@ -52,11 +52,18 @@ AC_PROG_AWK AC_PROG_INSTALL AC_ARG_PROGRAM +AC_CHECK_PROGS(LINT, tdlint lint alint) ### checks for UNIX variants that set C preprocessor variables AC_AIX AC_ISC_POSIX +### checks for compiler characteristics +CF_ANSI_CC_CHECK +AC_CONST +CF_PROG_EXT +CF_XOPEN_SOURCE + ### checks for header files AC_CHECK_HEADERS( \ ncurses/term.h \ @@ -101,17 +108,11 @@ CF_ERRNO CF_TTY_GROUP -### checks for compiler characteristics -CF_ANSI_CC_CHECK -AC_CONST -CF_PROG_EXT - ### checks for system services and user specified options CF_POSIX_WAIT CF_SYSV CF_SVR4 -CF_GNU_SOURCE CF_X_TOOLKIT AC_CHECK_HEADERS( \ @@ -539,11 +540,21 @@ AC_MSG_RESULT($enable_vt52) test "$enable_vt52" = no && AC_DEFINE(OPT_VT52_MODE,0) +AC_MSG_CHECKING(if you want to use mini-luit/Latin9 built-in support) +CF_ARG_ENABLE(mini-luit, + [ --enable-mini-luit enable mini-luit (built-in Latin9 support)], + [enable_mini_luit=yes], + [enable_mini_luit=no]) +AC_MSG_RESULT($enable_mini_luit) +if test "$enable_mini_luit" = yes ; then + AC_DEFINE(OPT_MINI_LUIT,1) +fi + AC_MSG_CHECKING(if you want to use luit) CF_ARG_ENABLE(luit, [ --enable-luit enable luit filter (Unicode translation)], [enable_luit=yes], - [enable_luit=no]) + [enable_luit=$enable_mini_luit]) AC_MSG_RESULT($enable_luit) if test "$enable_luit" = yes ; then AC_DEFINE(OPT_LUIT_PROG,1) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/ctlseqs.ms x11r682/xc/programs/xterm/ctlseqs.ms --- xc/programs/xterm/ctlseqs.ms 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/ctlseqs.ms 2005-01-12 22:45:10.000000000 +0100 @@ -1,13 +1,13 @@ .\"#! troff -ms $1 -*- Nroff -*- .\" "Xterm Control Sequences" document -.\" $XTermId: ctlseqs.ms,v 1.143 2004/07/20 01:16:47 tom Exp $ +.\" $XTermId: ctlseqs.ms,v 1.147 2004/12/01 01:27:44 tom Exp $ .\" .\" .\" $Xorg: ctlseqs.ms,v 1.3 2000/08/17 19:42:51 cpqbld Exp $ .\" .\" .\" -.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.53 2004/07/20 01:16:47 dickey Exp $ +.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.54 2004/12/01 01:27:44 dickey Exp $ .\" .\" .\" Copyright 1996-2003,2004 by Thomas E. Dickey @@ -161,7 +161,6 @@ .[] Us \v'-1p'\s\nsUS\s0\v'1p' .[] XX \v'-1p'\s\nsXX\s0\v'1p' .[] $ $ -.[] ! ! .[] # # .[] % % .[] (( ( @@ -365,7 +364,7 @@ .ds RH VT100 Mode .LP Most of these control sequences are standard VT102 control sequences, -but there is support for later DEC VT terminals (i.e., VT220 and VT320), +but there is support for later DEC VT terminals (i.e., VT220, VT320, VT420), as well as ISO 6429 and \fIaixterm\fP color controls. The only VT102 features not supported is auto-repeat, since the only way X provides for this will affect all windows. @@ -749,6 +748,7 @@ \*(Ps = \*8 \(-> Auto-repeat Keys (DECARM) \*(Ps = \*9 \(-> Send Mouse X & Y on button press. See the section \fBMouse Tracking\fP. + \*(Ps = \*1\*0 \(-> Show toolbar (rxvt) \*(Ps = \*1\*2 \(-> Start Blinking Cursor (att610) \*(Ps = \*1\*8 \(-> Print form feed (DECPFF) \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX) @@ -825,6 +825,7 @@ \*(Ps = \*7 \(-> No Wraparound Mode (DECAWM) \*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM) \*(Ps = \*9 \(-> Don't Send Mouse X & Y on button press + \*(Ps = \*1\*0 \(-> Hide toolbar (rxvt) \*(Ps = \*1\*2 \(-> Stop Blinking Cursor (att610) \*(Ps = \*1\*8 \(-> Don't print form feed (DECPFF) \*(Ps = \*1\*9 \(-> Limit print to scrolling region (DECPEX) @@ -962,7 +963,7 @@ .br \*(Cs\*?\*5\*0\*s\*n No Locator, if not. . -.IP \\*(Cs\\*s\\*!\\*p +.IP \\*(Cs\\*!\\*p Soft terminal reset (DECSTR) . .IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*(c"\\*p @@ -991,6 +992,11 @@ Restore DEC Private Mode Values. The value of \*(Ps previously saved is restored. \*(Ps values are the same as for DECSET. . +.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*r +Change Attributes in Rectangular Area (DECCARA). + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. + \*(Ps denotes the SGR attributes to change: 0, 1, 4, 5, 7 +. .IP \\*(Cs\\*(cs Save cursor (ANSI.SYS) . @@ -1027,9 +1033,21 @@ \*(Os\*s\*l\*s\fItitle\fP\*s\*(ST \*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP) . +.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*t +Reverse Attributes in Rectangular Area (DECRARA). + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. + \*(Ps denotes the attributes to reverse. 1, 4, 5, 7 +. .IP \\*(Cs\\*u Save cursor (ANSI.SYS) . +.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Pp\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pp\\*$\\*v +Copy Rectangular Area (DECCRA) + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. + \*(Pp denotes the source page. + \*(Pt\*;\*(Pl denotes the target location. + \*(Pp denotes the target page. +. .IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*(Pb\\*s\\*;\\*(Pr\\*s\\*(qu\\*w Enable Filter Rectangle (DECEFR) .br @@ -1057,6 +1075,17 @@ \*1 \(-> clock multiplier \*0 \(-> STP flags . +.IP \\*(Cs\\*(Ps\\*s\\*x +Select Attribute Change Extent (DECSACE). + \*(Ps = \*0 \(-> from start to end position, wrapped + \*(Ps = \*1 \(-> from start to end position, wrapped + \*(Ps = \*2 \(-> rectangle (exact). +. +.IP \\*(Cs\\*(Pc\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*x +Fill Rectangular Area (DECFRA). + \*(Pc is the character to use. + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. +. .IP \\*(Cs\\*(Ps\\*s\\*;\\*(Pu\\*s\\*(qu\\*z Enable Locator Reporting (DECELR) .br @@ -1072,6 +1101,10 @@ \*(Pu = \*1 \(-> device physical pixels \*(Pu = \*2 \(-> character cells . +.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*z +Erase Rectangular Area (DECERA). + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. +. .IP \\*(Cs\\*(Pm\\*s\\*(qu\\*{ Select Locator Events (DECSLE) .br @@ -1083,6 +1116,10 @@ \*(Ps = \*3 \(-> report button up transitions \*(Ps = \*4 \(-> do not report button up transitions . +.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*{ +Selective Erase Rectangular Area (DECSERA). + \*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle. +. .IP \\*(Cs\\*(Ps\\*s\\*(qu\\*| Request Locator Position (DECRQLP) .br diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/cursor.c x11r682/xc/programs/xterm/cursor.c --- xc/programs/xterm/cursor.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/cursor.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,11 +1,13 @@ +/* $XTermId: cursor.c,v 1.32 2004/12/01 01:27:46 tom Exp $ */ + /* * $Xorg: cursor.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/cursor.c,v 3.15 2002/04/28 19:04:20 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/cursor.c,v 3.16 2004/12/01 01:27:46 dickey Exp $ */ /* - * Copyright 2002 by Thomas E. Dickey + * Copyright 2002,2004 by Thomas E. Dickey * * All Rights Reserved * @@ -61,55 +63,43 @@ #include /* - * Clear the selection if the cursor moves "before" the current position. - * Moving "after" is ok. - * - * That sounds fine - if the cursor really had anything direct relationship to - * the selection. For instance, if the cursor moved due to command line - * editing, it would be nice to deselect. However, what that means in practice - * is that a fullscreen program which scrolls back a line will (because it must - * temporarily reposition the cursor) clear the selection. - * - * However, it has an indirect relationship to the selection - we want to - * prevent the application from changing the screen contents under the - * highlighted region. - */ -#define _CheckSelection(screen) \ - if ((screen->cur_row < screen->endHRow) || \ - (screen->cur_row == screen->endHRow && \ - screen->cur_col < screen->endHCol)) \ - DisownSelection(term); - -/* * Moves the cursor to the specified position, checking for bounds. * (this includes scrolling regions) * The origin is considered to be 0, 0 for this procedure. */ void -CursorSet(register TScreen * screen, register int row, register int col, unsigned flags) +CursorSet(TScreen * screen, int row, int col, unsigned flags) { - register int maxr; + int use_row = row; + int max_row; col = (col < 0 ? 0 : col); screen->cur_col = (col <= screen->max_col ? col : screen->max_col); - maxr = screen->max_row; + max_row = screen->max_row; if (flags & ORIGIN) { - row += screen->top_marg; - maxr = screen->bot_marg; + use_row += screen->top_marg; + max_row = screen->bot_marg; } - row = (row < 0 ? 0 : row); - screen->cur_row = (row <= maxr ? row : maxr); + use_row = (use_row < 0 ? 0 : use_row); + screen->cur_row = (use_row <= max_row ? use_row : max_row); screen->do_wrap = 0; - _CheckSelection(screen); + + TRACE(("CursorSet(%d,%d) margins [%d..%d] -> %d,%d %s\n", + row, col, + screen->top_marg, + screen->bot_marg, + screen->cur_row, + screen->cur_col, + (flags & ORIGIN ? "origin" : "normal"))); } /* * moves the cursor left n, no wrap around */ void -CursorBack(register TScreen * screen, int n) +CursorBack(TScreen * screen, int n) { - register int i, j, k, rev; + int i, j, k, rev; if ((rev = (term->flags & (REVERSEWRAP | WRAPAROUND)) == (REVERSEWRAP | WRAPAROUND)) != 0 @@ -128,20 +118,18 @@ screen->cur_col = 0; } screen->do_wrap = 0; - _CheckSelection(screen); } /* * moves the cursor forward n, no wraparound */ void -CursorForward(register TScreen * screen, int n) +CursorForward(TScreen * screen, int n) { screen->cur_col += n; if (screen->cur_col > CurMaxCol(screen, screen->cur_row)) screen->cur_col = CurMaxCol(screen, screen->cur_row); screen->do_wrap = 0; - _CheckSelection(screen); } /* @@ -149,9 +137,9 @@ * Won't pass bottom margin or bottom of screen. */ void -CursorDown(register TScreen * screen, int n) +CursorDown(TScreen * screen, int n) { - register int max; + int max; max = (screen->cur_row > screen->bot_marg ? screen->max_row : screen->bot_marg); @@ -160,7 +148,6 @@ if (screen->cur_row > max) screen->cur_row = max; screen->do_wrap = 0; - _CheckSelection(screen); } /* @@ -168,18 +155,18 @@ * Won't pass top margin or top of screen. */ void -CursorUp(register TScreen * screen, int n) +CursorUp(TScreen * screen, int n) { - register int min; + int min; - min = (screen->cur_row < screen->top_marg ? - 0 : screen->top_marg); + min = ((screen->cur_row < screen->top_marg) + ? 0 + : screen->top_marg); screen->cur_row -= n; if (screen->cur_row < min) screen->cur_row = min; screen->do_wrap = 0; - _CheckSelection(screen); } /* @@ -187,9 +174,9 @@ * Won't leave scrolling region. No carriage return. */ void -xtermIndex(register TScreen * screen, register int amount) +xtermIndex(TScreen * screen, int amount) { - register int j; + int j; /* * indexing when below scrolling region is cursor down. @@ -210,7 +197,7 @@ * Won't leave scrolling region. No carriage return. */ void -RevIndex(register TScreen * screen, register int amount) +RevIndex(TScreen * screen, int amount) { /* * reverse indexing when above scrolling region is cursor up. @@ -231,21 +218,20 @@ * (Note: xterm doesn't implement SLH, SLL which would affect use of this) */ void -CarriageReturn(register TScreen * screen) +CarriageReturn(TScreen * screen) { screen->cur_col = 0; screen->do_wrap = 0; - _CheckSelection(screen); } /* * Save Cursor and Attributes */ void -CursorSave(register XtermWidget tw) +CursorSave(XtermWidget tw) { - register TScreen *screen = &tw->screen; - register SavedCursor *sc = &screen->sc[screen->alternate != False]; + TScreen *screen = &tw->screen; + SavedCursor *sc = &screen->sc[screen->alternate != False]; sc->saved = True; sc->row = screen->cur_row; @@ -271,10 +257,10 @@ * Restore Cursor and Attributes */ void -CursorRestore(register XtermWidget tw) +CursorRestore(XtermWidget tw) { - register TScreen *screen = &tw->screen; - register SavedCursor *sc = &screen->sc[screen->alternate != False]; + TScreen *screen = &tw->screen; + SavedCursor *sc = &screen->sc[screen->alternate != False]; /* Restore the character sets, unless we never did a save-cursor op. * In that case, we'll reset the character sets. diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/doublechr.c x11r682/xc/programs/xterm/doublechr.c --- xc/programs/xterm/doublechr.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/doublechr.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,12 +1,12 @@ -/* $XTermId: doublechr.c,v 1.33 2004/04/18 20:49:43 tom Exp $ */ +/* $XTermId: doublechr.c,v 1.35 2004/12/01 01:27:46 tom Exp $ */ /* - * $XFree86: xc/programs/xterm/doublechr.c,v 3.13 2004/04/18 20:49:43 dickey Exp $ + * $XFree86: xc/programs/xterm/doublechr.c,v 3.14 2004/12/01 01:27:46 dickey Exp $ */ /************************************************************ -Copyright 1997-2002,2003 by Thomas E. Dickey +Copyright 1997-2003,2004 by Thomas E. Dickey All Rights Reserved @@ -78,22 +78,21 @@ /* * ScrnRefresh won't paint blanks for us if we're switching between a - * single-size and double-size font. + * single-size and double-size font. So we paint our own. */ if (CSET_DOUBLE(oldChrSet) != CSET_DOUBLE(newChrSet)) { - ClearCurBackground( - screen, - CursorY(screen, currow), - CurCursorX(screen, currow, 0), - FontHeight(screen), - len * CurFontWidth(screen, currow)); + ClearCurBackground(screen, + CursorY(screen, currow), + CurCursorX(screen, currow, 0), + FontHeight(screen), + len * CurFontWidth(screen, currow)); } /* FIXME: do VT220 softchars allow double-sizes? */ memset(SCRN_BUF_CSETS(screen, currow), newChrSet, len); screen->cur_col = 0; - ScrnRefresh(screen, currow, 0, 1, len, True); + ScrnUpdate(screen, currow, 0, 1, len, True); screen->cur_col = curcol; } #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/fontutils.c x11r682/xc/programs/xterm/fontutils.c --- xc/programs/xterm/fontutils.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/fontutils.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,7 +1,7 @@ -/* $XTermId: fontutils.c,v 1.124 2004/07/13 00:41:28 tom Exp $ */ +/* $XTermId: fontutils.c,v 1.131 2004/12/01 01:27:46 tom Exp $ */ /* - * $XFree86: xc/programs/xterm/fontutils.c,v 1.47 2004/07/13 00:41:28 dickey Exp $ + * $XFree86: xc/programs/xterm/fontutils.c,v 1.48 2004/12/01 01:27:46 dickey Exp $ */ /************************************************************ @@ -444,7 +444,9 @@ return False; } } else { - if (char2lower(*pattern++) != char2lower(*match++)) + int p = char2lower(*pattern++); + int m = char2lower(*match++); + if (p != m) return False; } } @@ -883,7 +885,7 @@ for (ch = 1; ch < 32; ch++) { int n = ch; #if OPT_WIDE_CHARS - if (screen->utf8_mode) { + if (screen->utf8_mode || screen->unicode_font) { n = dec2ucs(ch); if (n == UCS_REPL) continue; @@ -1019,7 +1021,7 @@ TRACE(("xtermLoadVTFonts(%s, %s)\n", myName, myClass)); memset(&subresourceRec, 0, sizeof(subresourceRec)); - XtGetSubresources((Widget) w, (XtPointer) & subresourceRec, + XtGetSubresources((Widget) w, (XtPointer) &subresourceRec, myName, myClass, font_resources, (Cardinal) XtNumber(font_resources), @@ -1058,7 +1060,7 @@ HandleLoadVTFonts(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { char buf[80]; char *myName = (*param_count > 0) ? params[0] : ""; @@ -1153,9 +1155,9 @@ if (norm == 0 && term->misc.face_name) { XftPattern *pat, *match; XftResult result; - int face_size = term->misc.face_size; + double face_size = term->misc.face_size; - TRACE(("xtermComputeFontInfo norm(face %s, size %d)\n", + TRACE(("xtermComputeFontInfo norm(face %s, size %f)\n", term->misc.face_name, term->misc.face_size)); @@ -1173,14 +1175,14 @@ int num = screen->menu_font_sizes[fontnum]; int den = screen->menu_font_sizes[0]; face_size = (1.0 * face_size * num) / den; - TRACE(("scaled using %d/%d -> %d\n", num, den, face_size)); + TRACE(("scaled using %d/%d -> %f\n", num, den, face_size)); } #endif pat = XftNameParse(term->misc.face_name); XftPatternBuild(pat, XFT_FAMILY, XftTypeString, "mono", - XFT_SIZE, XftTypeInteger, face_size, + XFT_SIZE, XftTypeDouble, face_size, XFT_SPACING, XftTypeInteger, XFT_MONO, (void *) 0); match = XftFontMatch(dpy, DefaultScreen(dpy), pat, &result); @@ -1230,14 +1232,14 @@ wnorm = XftFontOpen(dpy, DefaultScreen(dpy), XFT_FAMILY, XftTypeString, face_name, - XFT_SIZE, XftTypeInteger, face_size, + XFT_SIZE, XftTypeDouble, face_size, XFT_SPACING, XftTypeInteger, XFT_MONO, XFT_CHAR_WIDTH, XftTypeInteger, char_width, (void *) 0); wbold = XftFontOpen(dpy, DefaultScreen(dpy), XFT_FAMILY, XftTypeString, face_name, - XFT_SIZE, XftTypeInteger, face_size, + XFT_SIZE, XftTypeDouble, face_size, XFT_SPACING, XftTypeInteger, XFT_MONO, XFT_CHAR_WIDTH, XftTypeInteger, char_width, XFT_WEIGHT, XftTypeInteger, XFT_WEIGHT_BOLD, @@ -1283,11 +1285,15 @@ win->width = width - i; win->height = height - j; - TRACE(("xtermComputeFontInfo fontsize %dx%d, screensize %dx%d\n", - FontHeight(screen), - FontWidth(screen), - Height(screen), - Width(screen))); + TRACE(("xtermComputeFontInfo window %dx%d (full %dx%d), fontsize %dx%d (asc %d, dsc %d)\n", + win->height, + win->width, + win->fullheight, + win->fullwidth, + win->f_height, + win->f_width, + win->f_ascent, + win->f_descent)); } /* save this information as a side-effect for double-sized characters */ @@ -1675,6 +1681,65 @@ XFreeGC(screen->display, gc2); } + +#if OPT_RENDERFONT && OPT_WIDE_CHARS + +/* + * Check if the given character has a glyph known to Xft. + * + * see xc/lib/Xft/xftglyphs.c + */ +Bool +xtermXftMissing(XftFont * font, int wc) +{ + unsigned check = XftCharIndex(term->screen.display, font, wc); + Bool result = False; + + if (check == 0) { + TRACE(("missingXft %d (%d)\n", wc, ucs2dec(wc))); + result = True; + } + return result; +} + +/* + * Check if the character corresponds to one of xterm's internal codes for + * line-drawing characters. That is only a subset of the 1-31 codes used for + * graphic characters. We want to know specifically about the line-drawing + * characters because the fonts used by Xft do not always give useful glyphs + * for line-drawing, and there is no reliable way to detect this. + */ +Bool +xtermIsLineDrawing(int wc) +{ + Bool result; + switch (wc) { + case 0x0B: /* lower_right_corner */ + case 0x0C: /* upper_right_corner */ + case 0x0D: /* upper_left_corner */ + case 0x0E: /* lower_left_corner */ + case 0x0F: /* cross */ + case 0x10: /* scan_line_1 */ + case 0x11: /* scan_line_3 */ + case 0x12: /* scan_line_7 */ + case 0x13: /* scan_line_9 */ + case 0x14: /* horizontal_line */ + case 0x15: /* left_tee */ + case 0x16: /* right_tee */ + case 0x17: /* bottom_tee */ + case 0x18: /* top_tee */ + case 0x19: /* vertical_line */ + result = True; + TRACE(("xtermIsLineDrawing %d\n", wc)); + break; + default: + result = False; + break; + } + return result; +} +#endif /* OPT_RENDERFONT && OPT_WIDE_CHARS */ + #endif /* OPT_BOX_CHARS */ #if OPT_WIDE_CHARS @@ -1860,7 +1925,7 @@ HandleLargerFont(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { if (term->misc.shift_fonts) { TScreen *screen = &term->screen; @@ -1880,7 +1945,7 @@ HandleSmallerFont(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { if (term->misc.shift_fonts) { TScreen *screen = &term->screen; @@ -1901,7 +1966,7 @@ HandleSetFont(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { int fontnum; VTFontNames fonts; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/fontutils.h x11r682/xc/programs/xterm/fontutils.h --- xc/programs/xterm/fontutils.h 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/fontutils.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,10 +1,10 @@ /* - * $XFree86: xc/programs/xterm/fontutils.h,v 1.12 2003/10/27 01:07:57 dickey Exp $ + * $XFree86: xc/programs/xterm/fontutils.h,v 1.13 2004/12/01 01:27:46 dickey Exp $ */ /************************************************************ -Copyright 1998-2000,2003 by Thomas E. Dickey +Copyright 1998-2003,2004 by Thomas E. Dickey All Rights Reserved @@ -68,6 +68,13 @@ extern Bool xtermLoadVTFonts(XtermWidget w, char *aName, char *cName); #endif +#define xtermIsDecGraphic(ch) ((ch) > 0 && (ch) < 32) + +#if OPT_RENDERFONT && OPT_WIDE_CHARS +extern Bool xtermIsLineDrawing(int /* wc */); +extern Bool xtermXftMissing(XftFont * /* font */, int /* wc */); +#endif + #if OPT_SHIFT_FONTS extern void HandleSmallerFont PROTO_XT_ACTIONS_ARGS; extern void HandleLargerFont PROTO_XT_ACTIONS_ARGS; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/input.c x11r682/xc/programs/xterm/input.c --- xc/programs/xterm/input.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/input.c 2005-01-12 22:45:10.000000000 +0100 @@ -2,7 +2,7 @@ * $Xorg: input.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/input.c,v 3.70 2004/03/04 02:21:55 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/input.c,v 3.71 2004/12/01 01:27:46 dickey Exp $ */ /* * Copyright 1999-2003,2004 by Thomas E. Dickey @@ -255,47 +255,6 @@ #define MODIFIER_PARM /*nothing */ #endif -#if OPT_WIDE_CHARS -/* Convert a Unicode value c into a UTF-8 sequence in strbuf */ -int -convertFromUTF8(unsigned long c, Char * strbuf) -{ - int nbytes = 0; - - if (c < 0x80) { - strbuf[nbytes++] = c; - } else if (c < 0x800) { - strbuf[nbytes++] = 0xc0 | (c >> 6); - strbuf[nbytes++] = 0x80 | (c & 0x3f); - } else if (c < 0x10000) { - strbuf[nbytes++] = 0xe0 | (c >> 12); - strbuf[nbytes++] = 0x80 | ((c >> 6) & 0x3f); - strbuf[nbytes++] = 0x80 | (c & 0x3f); - } else if (c < 0x200000) { - strbuf[nbytes++] = 0xf0 | (c >> 18); - strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 6) & 0x3f); - strbuf[nbytes++] = 0x80 | (c & 0x3f); - } else if (c < 0x4000000) { - strbuf[nbytes++] = 0xf8 | (c >> 24); - strbuf[nbytes++] = 0x80 | ((c >> 18) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 6) & 0x3f); - strbuf[nbytes++] = 0x80 | (c & 0x3f); - } else if (c < UCS_LIMIT) { - strbuf[nbytes++] = 0xfe | (c >> 30); - strbuf[nbytes++] = 0x80 | ((c >> 24) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 18) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f); - strbuf[nbytes++] = 0x80 | ((c >> 6) & 0x3f); - strbuf[nbytes++] = 0x80 | (c & 0x3f); - } else - return convertFromUTF8(UCS_REPL, strbuf); - - return nbytes; -} -#endif /* OPT_WIDE_CHARS */ - /* * Determine if we use the \E[3~ sequence for Delete, or the legacy ^?. We * maintain the delete_is_del value as 3 states: unspecified(2), true and @@ -1028,7 +987,7 @@ Bool result = False; XtGetSubresources(w, - (XtPointer) & data, + (XtPointer) &data, "vt100", "VT100", key_resources, @@ -1092,37 +1051,42 @@ int min_keycode, max_keycode, keysyms_per_keycode = 0; if (keymap != 0) { + KeySym *theMap; TRACE(("VTInitModifiers\n")); XDisplayKeycodes(dpy, &min_keycode, &max_keycode); - XGetKeyboardMapping(dpy, min_keycode, (max_keycode - min_keycode + 1), - &keysyms_per_keycode); - - for (i = k = 0, mask = 1; i < 8; i++, mask <<= 1) { - for (j = 0; j < keymap->max_keypermod; j++) { - KeyCode code = keymap->modifiermap[k]; - if (code != 0) { - KeySym keysym; - int l = 0; - do { - keysym = XKeycodeToKeysym(dpy, code, l); - l++; - } while (!keysym && l < keysyms_per_keycode); - if (keysym == XK_Num_Lock) { - SaveMask(num_lock); - } else if (keysym == XK_Alt_L) { - SaveMask(alt_left); - } else if (keysym == XK_Alt_R) { - SaveMask(alt_right); - } else if (keysym == XK_Meta_L) { - SaveMask(meta_left); - } else if (keysym == XK_Meta_R) { - SaveMask(meta_right); + theMap = XGetKeyboardMapping(dpy, min_keycode, (max_keycode - + min_keycode + 1), + &keysyms_per_keycode); + + if (theMap != 0) { + for (i = k = 0, mask = 1; i < 8; i++, mask <<= 1) { + for (j = 0; j < keymap->max_keypermod; j++) { + KeyCode code = keymap->modifiermap[k]; + if (code != 0) { + KeySym keysym; + int l = 0; + do { + keysym = XKeycodeToKeysym(dpy, code, l); + l++; + } while (!keysym && l < keysyms_per_keycode); + if (keysym == XK_Num_Lock) { + SaveMask(num_lock); + } else if (keysym == XK_Alt_L) { + SaveMask(alt_left); + } else if (keysym == XK_Alt_R) { + SaveMask(alt_right); + } else if (keysym == XK_Meta_L) { + SaveMask(meta_left); + } else if (keysym == XK_Meta_R) { + SaveMask(meta_right); + } } + k++; } - k++; } + XFree(theMap); } /* Don't disable any mods if "alwaysUseMods" is true. */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/main.c x11r682/xc/programs/xterm/main.c --- xc/programs/xterm/main.c 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/main.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: main.c,v 1.396 2004/08/15 21:07:59 tom Exp $ */ +/* $XTermId: main.c,v 1.404 2004/12/01 01:27:47 tom Exp $ */ #if !defined(lint) && 0 static char *rid = "$Xorg: main.c,v 1.7 2001/02/09 02:06:02 xorgcvs Exp $"; @@ -91,7 +91,7 @@ ******************************************************************/ -/* $XFree86: xc/programs/xterm/main.c,v 3.185 2004/08/15 21:07:59 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/main.c,v 3.186 2004/12/01 01:27:47 dickey Exp $ */ /* main.c */ @@ -283,6 +283,10 @@ #else +#ifdef __INTERIX +#define setpgrp setpgid +#endif + #ifndef linux #ifndef VMS #ifndef USE_POSIX_TERMIOS @@ -295,7 +299,9 @@ #else #include #endif +#ifndef __INTERIX #define HAS_BSD_GROUPS +#endif #endif /* !VMS */ #endif /* !linux */ @@ -479,7 +485,10 @@ #define VAL_INITIAL_ERASE A2E(8) /* choose a nice default value for speed - if we make it too low, users who - * mistakenly use $TERM set to vt100 will get padding delays + * mistakenly use $TERM set to vt100 will get padding delays. Setting it to a + * higher value is not useful since legacy applications (termcap) that care + * about padding generally store the code in a short, which does not have + * enough bits for the extended values. */ #ifdef B38400 /* everyone should define this */ #define VAL_LINE_SPEED B38400 @@ -589,7 +598,7 @@ #define TTYMODE(name) { name, sizeof(name)-1, 0, 0 } static int override_tty_modes = 0; /* *INDENT-OFF* */ -struct _xttymodes { +static struct _xttymodes { char *name; size_t len; int set; @@ -860,8 +869,10 @@ {"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"}, {"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"}, #endif +#if OPT_TEK4014 {"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"}, {"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"}, +#endif {"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL}, {"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL}, {"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL}, @@ -1237,7 +1248,7 @@ Atom * selection GCC_UNUSED, Atom * target GCC_UNUSED, Atom * type GCC_UNUSED, - XtPointer * value GCC_UNUSED, + XtPointer *value GCC_UNUSED, unsigned long *length GCC_UNUSED, int *format GCC_UNUSED) { @@ -1278,7 +1289,7 @@ DeleteWindow(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { #if OPT_TEK4014 if (w == toplevel) { @@ -1298,7 +1309,7 @@ KeyboardMapping(Widget w GCC_UNUSED, XEvent * event, String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { switch (event->type) { case MappingNotify: @@ -1307,7 +1318,7 @@ } } -XtActionsRec actionProcs[] = +static XtActionsRec actionProcs[] = { {"DeleteWindow", DeleteWindow}, {"KeyboardMapping", KeyboardMapping}, @@ -1822,7 +1833,7 @@ #endif /* OPT_SESSION_MGT */ XtSetErrorHandler((XtErrorHandler) 0); - XtGetApplicationResources(toplevel, (XtPointer) & resource, + XtGetApplicationResources(toplevel, (XtPointer) &resource, application_resources, XtNumber(application_resources), NULL, 0); TRACE_XRES(); @@ -3312,6 +3323,13 @@ /* input: nl->nl, don't ignore cr, cr->nl */ tio.c_iflag &= ~(INLCR | IGNCR); tio.c_iflag |= ICRNL; +#if OPT_WIDE_CHARS && defined(linux) && defined(IUTF8) +#if OPT_LUIT_PROG + if (command_to_exec_with_luit == 0) +#endif + if (screen->utf8_mode) + tio.c_iflag |= IUTF8; +#endif /* ouput: cr->cr, nl is not return, no delays, ln->cr/nl */ #ifndef USE_POSIX_TERMIOS tio.c_oflag &= @@ -4212,7 +4230,8 @@ break; default: fprintf(stderr, "%s: unexpected handshake status %d\n", - xterm_name, handshake.status); + xterm_name, + (int) handshake.status); } } /* close our sides of the pipes */ @@ -4393,6 +4412,32 @@ set_owner(ptydev, 0, 0, 0666); #endif } +#if OPT_TRACE || defined(NO_LEAKS) + if (n == 0) { + TRACE(("Freeing memory leaks\n")); + if (term != 0) { + Display *dpy = term->screen.display; + + if (term->screen.sbuf_address) { + free(term->screen.sbuf_address); + TRACE(("freed screen.sbuf_address\n")); + } + if (term->screen.allbuf) { + free(term->screen.allbuf); + TRACE(("freed screen.allbuf\n")); + } + if (term->screen.xim) { + XCloseIM(term->screen.xim); + TRACE(("freed screen.xim\n")); + } + if (toplevel) + XtDestroyWidget(toplevel); + XtCloseDisplay(dpy); + } + TRACE((0)); + } +#endif + exit(n); SIGNAL_RETURN; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/main.h x11r682/xc/programs/xterm/main.h --- xc/programs/xterm/main.h 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/main.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,10 +1,10 @@ -/* $XTermId: main.h,v 1.25 2004/07/13 00:41:29 tom Exp $ */ +/* $XTermId: main.h,v 1.27 2004/12/01 01:27:47 tom Exp $ */ /* * $Xorg: main.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/main.h,v 3.11 2004/07/13 00:41:29 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/main.h,v 3.12 2004/12/01 01:27:47 dickey Exp $ */ /* * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. @@ -41,7 +41,7 @@ #define DEFBOLDFONT NULL /* no bold font uses overstriking */ #define DEFBORDER 2 #define DEFFACENAME NULL -#define DEFFACESIZE 14 +#define DEFFACESIZE "14.0" #if OPT_BLINK_TEXT #define DEFBLINKASBOLD FALSE diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/menu.c x11r682/xc/programs/xterm/menu.c --- xc/programs/xterm/menu.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/menu.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: menu.c,v 1.145 2004/05/30 23:59:41 tom Exp $ */ +/* $XTermId: menu.c,v 1.150 2004/12/01 01:27:47 tom Exp $ */ /* $Xorg: menu.c,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $ */ /* @@ -47,7 +47,7 @@ in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/programs/xterm/menu.c,v 3.56 2004/06/06 22:15:25 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/menu.c,v 3.57 2004/12/01 01:27:47 dickey Exp $ */ #include #include @@ -216,6 +216,10 @@ static void handle_vtshow (Widget gw, Bool allowswitch); #endif +#if OPT_TOOLBAR +static void do_toolbar PROTO_XT_CALLBACK_ARGS; +#endif + #if OPT_WIDE_CHARS static void do_font_utf8_mode PROTO_XT_CALLBACK_ARGS; #endif @@ -224,6 +228,9 @@ * The order of entries MUST match the values given in menu.h */ MenuEntry mainMenuEntries[] = { +#if OPT_TOOLBAR + { "toolbar", do_toolbar, NULL }, +#endif { "securekbd", do_securekbd, NULL }, { "allowsends", do_allowsends, NULL }, { "redraw", do_redraw, NULL }, @@ -520,7 +527,7 @@ domenu(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params, /* mainMenu, vtMenu, or tekMenu */ - Cardinal * param_count) /* 0 or 1 */ + Cardinal *param_count) /* 0 or 1 */ { TScreen *screen = &term->screen; MenuIndex me; @@ -548,6 +555,7 @@ switch (me) { case mainMenu: if (created) { + update_toolbar(); update_securekbd(); update_allowsends(); update_logging(); @@ -693,7 +701,7 @@ HandleCreateMenu(Widget w, XEvent * event, String * params, /* mainMenu, vtMenu, or tekMenu */ - Cardinal * param_count) /* 0 or 1 */ + Cardinal *param_count) /* 0 or 1 */ { (void) domenu(w, event, params, param_count); } @@ -702,7 +710,7 @@ HandlePopupMenu(Widget w, XEvent * event, String * params, /* mainMenu, vtMenu, or tekMenu */ - Cardinal * param_count) /* 0 or 1 */ + Cardinal *param_count) /* 0 or 1 */ { if (domenu(w, event, params, param_count)) { #if OPT_TOOLBAR @@ -1556,7 +1564,7 @@ HandleAllowSends(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_allowsends, (int) term->screen.allowSendEvents, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1566,7 +1574,7 @@ HandleSetVisualBell(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_visualbell, (int) term->screen.visualbell, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1576,7 +1584,7 @@ HandleSetPopOnBell(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_poponbell, (int) term->screen.poponbell, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1587,7 +1595,7 @@ HandleLogging(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_logging, (int) term->screen.logging, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1599,7 +1607,7 @@ HandlePrintScreen(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_print(w, (XtPointer) 0, (XtPointer) 0); } @@ -1609,7 +1617,7 @@ HandlePrintControlMode(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_print_redir(w, (XtPointer) 0, (XtPointer) 0); } @@ -1619,7 +1627,7 @@ HandleRedraw(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_redraw(w, (XtPointer) 0, (XtPointer) 0); } @@ -1629,7 +1637,7 @@ HandleSendSignal(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { /* *INDENT-OFF* */ static struct sigtab { @@ -1674,7 +1682,7 @@ HandleQuit(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_quit(w, (XtPointer) 0, (XtPointer) 0); } @@ -1683,7 +1691,7 @@ Handle8BitControl(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_8bit_control, (int) term->screen.control_eight_bits, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1693,7 +1701,7 @@ HandleBackarrow(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_backarrow, (int) term->keyboard.flags & MODE_DECBKM, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1703,7 +1711,7 @@ HandleSunFunctionKeys(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_sun_fkeys, term->keyboard.type == keyboardIsSun, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1714,7 +1722,7 @@ HandleNumLock(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_num_lock, (int) term->misc.real_NumLock, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1724,7 +1732,7 @@ HandleMetaEsc(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_meta_esc, (int) term->screen.meta_sends_esc, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1735,7 +1743,7 @@ HandleDeleteIsDEL(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_delete_del, term->screen.delete_is_del, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1745,7 +1753,7 @@ HandleOldFunctionKeys(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_old_fkeys, term->keyboard.type == keyboardIsLegacy, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1756,7 +1764,7 @@ HandleSunKeyboard(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_sun_kbd, term->keyboard.type == keyboardIsVT220, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1768,7 +1776,7 @@ HandleHpFunctionKeys(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_hp_fkeys, term->keyboard.type == keyboardIsHP, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1780,7 +1788,7 @@ HandleScoFunctionKeys(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_sco_fkeys, term->keyboard.type == keyboardIsSCO, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1791,7 +1799,7 @@ HandleScrollbar(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_scrollbar, (int) term->screen.fullVwin.sb_info.width, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1801,7 +1809,7 @@ HandleJumpscroll(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_jumpscroll, (int) term->screen.jumpscroll, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1811,7 +1819,7 @@ HandleReverseVideo(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_reversevideo, (int) (term->misc.re_verse0), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1821,7 +1829,7 @@ HandleAutoWrap(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_autowrap, (int) (term->flags & WRAPAROUND), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1831,7 +1839,7 @@ HandleReverseWrap(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_reversewrap, (int) (term->flags & REVERSEWRAP), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1841,7 +1849,7 @@ HandleAutoLineFeed(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_autolinefeed, (int) (term->flags & LINEFEED), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1851,7 +1859,7 @@ HandleAppCursor(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_appcursor, (int) (term->keyboard.flags & MODE_DECCKM), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1861,7 +1869,7 @@ HandleAppKeypad(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_appkeypad, (int) (term->keyboard.flags & MODE_DECKPAM), params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1871,7 +1879,7 @@ HandleScrollKey(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_scrollkey, (int) term->screen.scrollkey, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1881,7 +1889,7 @@ HandleScrollTtyOutput(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_scrollttyoutput, (int) term->screen.scrollttyoutput, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1891,7 +1899,7 @@ HandleAllow132(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_allow132, (int) term->screen.c132, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1901,7 +1909,7 @@ HandleCursesEmul(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_cursesemul, (int) term->screen.curses, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1911,7 +1919,7 @@ HandleMarginBell(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_marginbell, (int) term->screen.marginbell, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1922,7 +1930,7 @@ HandleCursorBlink(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { /* eventually want to see if sensitive or not */ handle_toggle(do_cursorblink, (int) term->screen.cursor_blink, @@ -1934,7 +1942,7 @@ HandleAltScreen(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { /* eventually want to see if sensitive or not */ handle_toggle(do_altscreen, (int) term->screen.alternate, @@ -1945,7 +1953,7 @@ HandleTiteInhibit(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { /* eventually want to see if sensitive or not */ handle_toggle(do_titeInhibit, !((int) term->misc.titeInhibit), @@ -1957,7 +1965,7 @@ HandleSoftReset(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_softreset(w, (XtPointer) 0, (XtPointer) 0); } @@ -1967,7 +1975,7 @@ HandleHardReset(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_hardreset(w, (XtPointer) 0, (XtPointer) 0); } @@ -1977,7 +1985,7 @@ HandleClearSavedLines(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_clearsavedlines(w, (XtPointer) 0, (XtPointer) 0); } @@ -1987,7 +1995,7 @@ HandleFontDoublesize(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_font_doublesize, (int) term->screen.font_doublesize, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -1999,7 +2007,7 @@ HandleFontBoxChars(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_font_boxchars, (int) term->screen.force_box_chars, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -2011,7 +2019,7 @@ HandleFontLoading(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_font_loadable, (int) term->misc.font_loadable, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -2023,7 +2031,7 @@ HandleRenderFont(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_font_renderfont, term->misc.render_font, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -2035,7 +2043,7 @@ HandleUTF8Mode(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { handle_toggle(do_font_utf8_mode, term->screen.utf8_mode, params, *param_count, w, (XtPointer) 0, (XtPointer) 0); @@ -2047,7 +2055,7 @@ HandleSetTerminalType(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { if (*param_count == 1) { switch (params[0][0]) { @@ -2073,7 +2081,7 @@ HandleVisibility(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { if (*param_count == 2) { switch (params[0][0]) { @@ -2102,7 +2110,7 @@ HandleSetTekText(Widget w, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { void (*proc) PROTO_XT_CALLBACK_ARGS = 0; @@ -2140,7 +2148,7 @@ HandleTekPage(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_tekpage(w, (XtPointer) 0, (XtPointer) 0); } @@ -2150,7 +2158,7 @@ HandleTekReset(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_tekreset(w, (XtPointer) 0, (XtPointer) 0); } @@ -2160,7 +2168,7 @@ HandleTekCopy(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * param_count GCC_UNUSED) + Cardinal *param_count GCC_UNUSED) { do_tekcopy(w, (XtPointer) 0, (XtPointer) 0); } @@ -2217,7 +2225,7 @@ } static void -SetupShell(Widget * menus, MenuList * shell, Widget * menu_tops, int n, int m) +SetupShell(Widget *menus, MenuList * shell, Widget *menu_tops, int n, int m) { char temp[80]; char *external_name = 0; @@ -2253,7 +2261,7 @@ #endif void -SetupMenus(Widget shell, Widget * forms, Widget * menus) +SetupMenus(Widget shell, Widget *forms, Widget *menus) { #if OPT_TOOLBAR int n; @@ -2327,8 +2335,100 @@ InitPopup(tek_shell[tekMenu].w, menu_names[tekMenu].internal_name, 0); } #endif + term->screen.toolbars = True; + update_toolbar(); } -#endif + +static TbInfo * +toolbar_info(Widget w) +{ + return ((w == (Widget) term) + ? &(WhichVWin(&(term->screen))->tb_info) + : &(tekWidget->tek.tb_info)); +} + +static void +hide_toolbar(Widget w) +{ + if (w != 0) { + TbInfo *info = toolbar_info(w); + + if (info->menu_bar != 0) { + if (XtIsRealized(info->menu_bar)) + XtUnmapWidget(info->menu_bar); + } + XtVaSetValues(w, + XtNfromVert, (Widget) 0, + (XtPointer) 0); + } +} + +static void +show_toolbar(Widget w) +{ + if (w != 0) { + TbInfo *info = toolbar_info(w); + + if (info->menu_bar != 0) { + if (XtIsRealized(info->menu_bar)) + XtMapWidget(info->menu_bar); + } + XtVaSetValues(w, + XtNfromVert, info->menu_bar, + (XtPointer) 0); + /* + * This is needed to make the terminal widget move down below the + * toolbar. + */ + XawFormDoLayout(XtParent(w), True); + } +} + +void +ShowToolbar(Boolean enable) +{ + if (enable) { + show_toolbar((Widget) term); + show_toolbar((Widget) tekWidget); + } else { + hide_toolbar((Widget) term); + hide_toolbar((Widget) tekWidget); + } +} + +void +HandleToolbar(Widget w, + XEvent * event GCC_UNUSED, + String * params GCC_UNUSED, + Cardinal *param_count GCC_UNUSED) +{ + handle_toggle(do_toolbar, (int) term->screen.toolbars, + params, *param_count, w, (XtPointer) 0, (XtPointer) 0); +} + +/* ARGSUSED */ +static void +do_toolbar(Widget gw GCC_UNUSED, + XtPointer closure GCC_UNUSED, + XtPointer data GCC_UNUSED) +{ + /* + * Toggle toolbars for both vt100 and tek windows, since they share the + * menu which contains the checkbox indicating whether the toolbar is + * active. + */ + ShowToolbar(term->screen.toolbars = !term->screen.toolbars); + update_toolbar(); +} + +void +update_toolbar(void) +{ + update_menu_item(term->screen.mainMenu, + mainMenuEntries[mainMenu_toolbar].widget, + term->screen.toolbars); +} +#endif /* OPT_TOOLBAR */ void update_securekbd(void) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/menu.h x11r682/xc/programs/xterm/menu.h --- xc/programs/xterm/menu.h 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/menu.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: menu.h,v 1.82 2004/05/13 00:41:21 tom Exp $ */ +/* $XTermId: menu.h,v 1.86 2004/12/01 01:27:47 tom Exp $ */ /* $Xorg: menu.h,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $ */ /* @@ -50,7 +50,7 @@ from The Open Group. */ -/* $XFree86: xc/programs/xterm/menu.h,v 3.33 2004/05/13 00:41:21 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/menu.h,v 3.34 2004/12/01 01:27:47 dickey Exp $ */ #ifndef included_menu_h #define included_menu_h @@ -120,6 +120,7 @@ extern void HandleTekPage PROTO_XT_ACTIONS_ARGS; extern void HandleTekReset PROTO_XT_ACTIONS_ARGS; extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS; +extern void HandleToolbar PROTO_XT_ACTIONS_ARGS; extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS; extern void HandleVisibility PROTO_XT_ACTIONS_ARGS; @@ -127,7 +128,8 @@ extern void SetupMenus (Widget shell, Widget *forms, Widget *menus); #if OPT_TOOLBAR -extern void SetupToolbar(Widget shell); +extern void SetupToolbar(Widget); +extern void ShowToolbar(Boolean); #endif /* @@ -139,6 +141,9 @@ * items in primary menu */ typedef enum { +#if OPT_TOOLBAR + mainMenu_toolbar, +#endif mainMenu_securekbd, mainMenu_allowsends, mainMenu_redraw, @@ -298,6 +303,12 @@ /* * there should be one of each of the following for each checkable item */ +#if OPT_TOOLBAR +extern void update_toolbar(void); +#else +#define update_toolbar() /* nothing */ +#endif + extern void update_securekbd(void); extern void update_allowsends(void); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/misc.c x11r682/xc/programs/xterm/misc.c --- xc/programs/xterm/misc.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/misc.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,14 +1,14 @@ -/* $XTermId: misc.c,v 1.231 2004/07/28 00:53:26 tom Exp $ */ +/* $XTermId: misc.c,v 1.235 2004/12/01 01:27:47 tom Exp $ */ /* * $Xorg: misc.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/misc.c,v 3.92 2004/07/28 00:53:26 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/misc.c,v 3.93 2004/12/01 01:27:47 dickey Exp $ */ /* * - * Copyright 1999-2002,2003 by Thomas E. Dickey + * Copyright 1999-2003,2004 by Thomas E. Dickey * * All Rights Reserved * @@ -237,7 +237,7 @@ HandleKeyPressed(Widget w GCC_UNUSED, XEvent * event, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { register TScreen *screen = &term->screen; @@ -253,7 +253,7 @@ HandleEightBitKeyPressed(Widget w GCC_UNUSED, XEvent * event, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { register TScreen *screen = &term->screen; @@ -269,7 +269,7 @@ HandleStringEvent(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params, - Cardinal * nparams) + Cardinal *nparams) { register TScreen *screen = &term->screen; @@ -320,7 +320,7 @@ HandleInterpret(Widget w GCC_UNUSED, XEvent * event GCC_UNUSED, String * params, - Cardinal * param_count) + Cardinal *param_count) { if (*param_count == 1) { char *value = params[0]; @@ -729,7 +729,7 @@ HandleDabbrevExpand(Widget gw, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { XtermWidget w = (XtermWidget) gw; TScreen *screen = &w->screen; @@ -744,7 +744,7 @@ HandleDeIconify(Widget gw, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { if (IsXtermWidget(gw)) { register TScreen *screen = &((XtermWidget) gw)->screen; @@ -757,7 +757,7 @@ HandleIconify(Widget gw, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { if (IsXtermWidget(gw)) { register TScreen *screen = &((XtermWidget) gw)->screen; @@ -890,7 +890,7 @@ HandleMaximize(Widget gw, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { if (IsXtermWidget(gw)) { RequestMaximize((XtermWidget) gw, 1); @@ -902,7 +902,7 @@ HandleRestoreSize(Widget gw, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * nparams GCC_UNUSED) + Cardinal *nparams GCC_UNUSED) { if (IsXtermWidget(gw)) { RequestMaximize((XtermWidget) gw, 0); @@ -976,11 +976,12 @@ #ifdef VMS if ((fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { + int the_error = errno; fprintf(stderr, "%s: cannot open %s: %d:%s\n", xterm_name, path, - errno, - SysErrorMsg(errno)); + the_error, + SysErrorMsg(the_error)); return -1; } chown(path, uid, gid); @@ -988,11 +989,12 @@ if ((access(path, F_OK) != 0 && (errno != ENOENT)) || (!(creat_as(uid, gid, append, path, 0644))) || ((fd = open(path, O_WRONLY | O_APPEND)) < 0)) { + int the_error = errno; fprintf(stderr, "%s: cannot open %s: %d:%s\n", xterm_name, path, - errno, - SysErrorMsg(errno)); + the_error, + SysErrorMsg(the_error)); return -1; } #endif @@ -1707,6 +1709,190 @@ } } +/* + * Parse the data for DECUDK (user-defined keys). + */ +static void +parse_decudk(char *cp) +{ + while (*cp) { + char *base = cp; + char *str = (char *) malloc(strlen(cp) + 2); + unsigned key = 0; + int lo, hi; + int len = 0; + + while (isdigit(CharOf(*cp))) + key = (key * 10) + (*cp++ - '0'); + if (*cp == '/') { + cp++; + while ((hi = udk_value(&cp)) >= 0 + && (lo = udk_value(&cp)) >= 0) { + str[len++] = (hi << 4) | lo; + } + } + if (len > 0 && key < MAX_UDK) { + if (user_keys[key].str != 0) + free(user_keys[key].str); + user_keys[key].str = str; + user_keys[key].len = len; + } else { + free(str); + } + if (*cp == ';') + cp++; + if (cp == base) /* badly-formed sequence - bail out */ + break; + } +} + +#if OPT_TRACE +#define SOFT_WIDE 10 +#define SOFT_HIGH 20 + +static void +parse_decdld(ANSI * params, char *string) +{ + char DscsName[8]; + int len; + int Pfn = params->a_param[0]; + int Pcn = params->a_param[1]; + int Pe = params->a_param[2]; + int Pcmw = params->a_param[3]; + int Pw = params->a_param[4]; + int Pt = params->a_param[5]; + int Pcmh = params->a_param[6]; + int Pcss = params->a_param[7]; + + int start_char = Pcn + 0x20; + int char_wide = ((Pcmw == 0) + ? (Pcss ? 6 : 10) + : (Pcmw > 4 + ? Pcmw + : (Pcmw + 3))); + int char_high = ((Pcmh == 0) + ? ((Pcmw >= 2 || Pcmw <= 4) + ? 10 + : 20) + : Pcmh); + Char ch; + Char bits[SOFT_HIGH][SOFT_WIDE]; + Boolean first = True; + Boolean prior = False; + int row = 0, col = 0; + + TRACE(("Parsing DECDLD\n")); + TRACE((" font number %d\n", Pfn)); + TRACE((" starting char %d\n", Pcn)); + TRACE((" erase control %d\n", Pe)); + TRACE((" char-width %d\n", Pcmw)); + TRACE((" font-width %d\n", Pw)); + TRACE((" text/full %d\n", Pt)); + TRACE((" char-height %d\n", Pcmh)); + TRACE((" charset-size %d\n", Pcss)); + + if (Pfn > 1 + || Pcn > 95 + || Pe > 2 + || Pcmw > 10 + || Pcmw == 1 + || Pt > 2 + || Pcmh > 20 + || Pcss > 1 + || char_wide > SOFT_WIDE + || char_high > SOFT_HIGH) { + TRACE(("DECDLD illegal parameter\n")); + return; + } + + len = 0; + while (*string != '\0') { + ch = CharOf(*string++); + if (ch >= 0x20 && ch <= 0x2f) { + if (len < 2) + DscsName[len++] = ch; + } else if (ch >= 0x30 && ch <= 0x7e) { + DscsName[len++] = ch; + break; + } + } + DscsName[len] = 0; + TRACE((" Dscs name '%s'\n", DscsName)); + + TRACE((" character matrix %dx%d\n", char_high, char_wide)); + while (*string != '\0') { + if (first) { + TRACE(("Char %d:\n", start_char)); + if (prior) { + for (row = 0; row < char_high; ++row) { + TRACE(("%.*s\n", char_wide, bits[row])); + } + } + prior = False; + first = False; + for (row = 0; row < char_high; ++row) { + for (col = 0; col < char_wide; ++col) { + bits[row][col] = '.'; + } + } + row = col = 0; + } + ch = CharOf(*string++); + if (ch >= 0x3f && ch <= 0x7e) { + int n; + + ch -= 0x3f; + for (n = 0; n < 6; ++n) { + bits[row + n][col] = (ch & (1 << n)) ? '*' : '.'; + } + col += 1; + prior = True; + } else if (ch == '/') { + row += 6; + col = 0; + } else if (ch == ';') { + first = True; + ++start_char; + } + } +} +#else +#define parse_decdld(p,q) /* nothing */ +#endif + +/* + * Parse numeric parameters. Normally we use a state machine to simplify + * interspersing with control characters, but have the string already. + */ +static void +parse_ansi_params(ANSI * params, char **string) +{ + char *cp = *string; + short nparam = 0; + + memset(params, 0, sizeof(*params)); + while (*cp != '\0') { + Char ch = CharOf(*cp++); + + if (isdigit(ch)) { + if (nparam < NPARAM) { + params->a_param[nparam] *= 10; + params->a_param[nparam] += (ch - '0'); + } + } else if (ch == ';') { + if (++nparam < NPARAM) + params->a_nparam = nparam; + } else if (ch < 32) { + ; + } else { + /* should be 0x30 to 0x7e */ + params->a_final = ch; + break; + } + } + *string = cp; +} + void do_dcs(Char * dcsbuf, size_t dcslen) { @@ -1714,7 +1900,7 @@ char reply[BUFSIZ]; char *cp = (char *) dcsbuf; Bool okay; - Bool clear_all; + ANSI params; TRACE(("do_dcs(%s:%d)\n", (char *) dcsbuf, dcslen)); @@ -1861,62 +2047,16 @@ break; #endif default: - if (isdigit(CharOf(*cp))) { /* digits are DECUDK, otherwise ignore */ - clear_all = True; - - if (*cp == '0') { - cp++; - } else if (*cp == '1') { - cp++; - clear_all = False; - } - - if (*cp == ';') - cp++; - else if (*cp != '|') - return; - - if (*cp == '0') { - cp++; - } else if (*cp == '1') { - cp++; - } - - if (*cp++ != '|') - return; - - if (clear_all) + parse_ansi_params(¶ms, &cp); + switch (params.a_final) { + case '|': /* DECUDK */ + if (params.a_param[0] == 0) reset_decudk(); - - while (*cp) { - char *base = cp; - char *str = (char *) malloc(strlen(cp) + 2); - unsigned key = 0; - int lo, hi; - int len = 0; - - while (isdigit(CharOf(*cp))) - key = (key * 10) + (*cp++ - '0'); - if (*cp == '/') { - cp++; - while ((hi = udk_value(&cp)) >= 0 - && (lo = udk_value(&cp)) >= 0) { - str[len++] = (hi << 4) | lo; - } - } - if (len > 0 && key < MAX_UDK) { - if (user_keys[key].str != 0) - free(user_keys[key].str); - user_keys[key].str = str; - user_keys[key].len = len; - } else { - free(str); - } - if (*cp == ';') - cp++; - if (cp == base) /* badly-formed sequence - bail out */ - break; - } + parse_decudk(cp); + break; + case '{': /* DECDLD */ + parse_decdld(¶ms, cp); + break; } break; } @@ -2010,7 +2150,7 @@ /***====================================================================***/ -ScrnColors *pOldColors = NULL; +static ScrnColors *pOldColors = NULL; static Boolean GetOldColors(XtermWidget pTerm) @@ -2435,9 +2575,11 @@ int xioerror(Display * dpy) { + int the_error = errno; + (void) fprintf(stderr, "%s: fatal IO error %d (%s) or KillClient on X server \"%s\"\r\n", - xterm_name, errno, SysErrorMsg(errno), + xterm_name, the_error, SysErrorMsg(the_error), DisplayString(dpy)); Exit(ERROR_XIOERROR); @@ -2621,8 +2763,9 @@ static int cmp_options(const void *a, const void *b) { - return strcmp(skip_punct(((const OptionHelp *) a)->opt), - skip_punct(((const OptionHelp *) b)->opt)); + const char *s1 = skip_punct(((const OptionHelp *) a)->opt); + const char *s2 = skip_punct(((const OptionHelp *) b)->opt); + return strcmp(s1, s2); } static int diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/os2main.c x11r682/xc/programs/xterm/os2main.c --- xc/programs/xterm/os2main.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/os2main.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,4 @@ -/* $XTermId: os2main.c,v 1.170 2004/07/20 01:14:41 tom Exp $ */ +/* $XTermId: os2main.c,v 1.173 2004/12/01 01:27:47 tom Exp $ */ /* removed all foreign stuff to get the code more clear (hv) * and did some rewrite for the obscure OS/2 environment @@ -7,7 +7,7 @@ #ifndef lint static char *rid = "$XConsortium: main.c,v 1.227.1.2 95/06/29 18:13:15 kaleb Exp $"; #endif /* lint */ -/* $XFree86: xc/programs/xterm/os2main.c,v 3.70 2004/07/20 01:14:41 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/os2main.c,v 3.71 2004/12/01 01:27:47 dickey Exp $ */ /*********************************************************** @@ -196,7 +196,7 @@ */ static int override_tty_modes = 0; /* *INDENT-OFF* */ -struct _xttymodes { +static struct _xttymodes { char *name; size_t len; int set; @@ -410,8 +410,10 @@ {"-sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "on"}, {"+sp", "*sunKeyboard", XrmoptionNoArg, (caddr_t) "off"}, #endif +#if OPT_TEK4014 {"-t", "*tekStartup", XrmoptionNoArg, (caddr_t) "on"}, {"+t", "*tekStartup", XrmoptionNoArg, (caddr_t) "off"}, +#endif {"-ti", "*decTerminalID",XrmoptionSepArg, (caddr_t) NULL}, {"-tm", "*ttyModes", XrmoptionSepArg, (caddr_t) NULL}, {"-tn", "*termName", XrmoptionSepArg, (caddr_t) NULL}, @@ -787,7 +789,7 @@ Atom * selection GCC_UNUSED, Atom * target GCC_UNUSED, Atom * type GCC_UNUSED, - XtPointer * value GCC_UNUSED, + XtPointer *value GCC_UNUSED, unsigned long *length GCC_UNUSED, int *format GCC_UNUSED) { @@ -827,7 +829,7 @@ DeleteWindow(Widget w, XEvent * event GCC_UNUSED, String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { #if OPT_TEK4014 if (w == toplevel) { @@ -847,7 +849,7 @@ KeyboardMapping(Widget w GCC_UNUSED, XEvent * event, String * params GCC_UNUSED, - Cardinal * num_params GCC_UNUSED) + Cardinal *num_params GCC_UNUSED) { switch (event->type) { case MappingNotify: @@ -856,7 +858,7 @@ } } -XtActionsRec actionProcs[] = +static XtActionsRec actionProcs[] = { {"DeleteWindow", DeleteWindow}, {"KeyboardMapping", KeyboardMapping}, @@ -962,7 +964,7 @@ #endif /* OPT_SESSION_MGT */ XtSetErrorHandler((XtErrorHandler) 0); - XtGetApplicationResources(toplevel, (XtPointer) & resource, + XtGetApplicationResources(toplevel, (XtPointer) &resource, application_resources, XtNumber(application_resources), NULL, 0); TRACE_XRES(); diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/plink.sh x11r682/xc/programs/xterm/plink.sh --- xc/programs/xterm/plink.sh 2004-04-23 21:55:07.000000000 +0200 +++ xc/programs/xterm/plink.sh 2005-01-12 22:45:10.000000000 +0100 @@ -1,5 +1,5 @@ #!/bin/sh -# $XFree86$ +# $XFree86: xc/programs/xterm/plink.sh,v 3.1 2001/03/13 09:48:43 dickey Exp $ # # Reduce the number of dynamic libraries used to link an executable. CMD= diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/precompose.c x11r682/xc/programs/xterm/precompose.c --- xc/programs/xterm/precompose.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/precompose.c 2005-01-12 22:45:10.000000000 +0100 @@ -4,11 +4,12 @@ * DO NOT EDIT BY HAND! This is generated by the script * unicode/make-precompose.sh */ -/* $XFree86: xc/programs/xterm/precompose.c,v 1.2 2000/11/01 01:12:41 dawes Exp $ */ +/* $XTermId: precompose.c,v 1.7 2004/12/01 01:27:47 tom Exp $ */ +/* $XFree86: xc/programs/xterm/precompose.c,v 1.3 2004/12/01 01:27:47 dickey Exp $ */ #include -struct { +static struct { int replacement; int base; int comb; @@ -753,6 +754,19 @@ { 0x0F76, 0x0FB2, 0x0F80}, { 0x0F78, 0x0FB3, 0x0F80}, { 0x1026, 0x1025, 0x102E}, +{ 0x1D15E, 0x1D157, 0x1D165}, +{ 0x1D15F, 0x1D158, 0x1D165}, +{ 0x1D160, 0x1D15F, 0x1D16E}, +{ 0x1D161, 0x1D15F, 0x1D16F}, +{ 0x1D162, 0x1D15F, 0x1D170}, +{ 0x1D163, 0x1D15F, 0x1D171}, +{ 0x1D164, 0x1D15F, 0x1D172}, +{ 0x1D1BB, 0x1D1B9, 0x1D165}, +{ 0x1D1BC, 0x1D1BA, 0x1D165}, +{ 0x1D1BD, 0x1D1BB, 0x1D16E}, +{ 0x1D1BF, 0x1D1BB, 0x1D16F}, +{ 0x1D1BE, 0x1D1BC, 0x1D16E}, +{ 0x1D1C0, 0x1D1BC, 0x1D16F}, { 0x1E38, 0x1E36, 0x0304}, { 0x1E39, 0x1E37, 0x0304}, { 0x1E5C, 0x1E5A, 0x0304}, @@ -941,6 +955,7 @@ { 0x22EB, 0x22B3, 0x0338}, { 0x22EC, 0x22B4, 0x0338}, { 0x22ED, 0x22B5, 0x0338}, +{ 0x2ADC, 0x2ADD, 0x0338}, { 0x3094, 0x3046, 0x3099}, { 0x304C, 0x304B, 0x3099}, { 0x304E, 0x304D, 0x3099}, diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/print.c x11r682/xc/programs/xterm/print.c --- xc/programs/xterm/print.c 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/print.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,10 +1,12 @@ +/* $XTermId: print.c,v 1.54 2004/12/01 01:27:47 tom Exp $ */ + /* - * $XFree86: xc/programs/xterm/print.c,v 1.19 2002/08/12 00:36:33 dickey Exp $ + * $XFree86: xc/programs/xterm/print.c,v 1.20 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ -Copyright 1997-2000,2002 by Thomas E. Dickey +Copyright 1997-2002,2004 by Thomas E. Dickey All Rights Reserved @@ -55,7 +57,6 @@ #define Strcmp(a,b) strcmp((char *)a,(char *)b) #define Strncmp(a,b,c) strncmp((char *)a,(char *)b,c) -#define SGR_MASK (BOLD|BLINK|UNDERLINE|INVERSE) #ifdef VMS #define VMS_TEMP_PRINT_FILE "sys$scratch:xterm_print.txt" #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/ptyx.h x11r682/xc/programs/xterm/ptyx.h --- xc/programs/xterm/ptyx.h 2004-08-13 14:57:20.000000000 +0200 +++ xc/programs/xterm/ptyx.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,10 +1,10 @@ -/* $XTermId: ptyx.h,v 1.328 2004/07/28 00:53:26 tom Exp $ */ +/* $XTermId: ptyx.h,v 1.346 2004/12/01 01:27:47 tom Exp $ */ /* * $Xorg: ptyx.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/ptyx.h,v 3.119 2004/07/28 00:53:26 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/ptyx.h,v 3.120 2004/12/01 01:27:47 dickey Exp $ */ /* * Copyright 1999-2003,2004 by Thomas E. Dickey @@ -319,11 +319,11 @@ } OptionHelp; typedef struct { - unsigned char a_type; - unsigned char a_pintro; - unsigned char a_final; - unsigned char a_inters; - char a_nparam; /* # of parameters */ + unsigned char a_type; /* CSI, etc., see unparseq() */ + unsigned char a_pintro; /* private-mode char, if any */ + unsigned char a_inters; /* special (before final-char) */ + unsigned char a_final; /* final-char */ + short a_nparam; /* # of parameters */ short a_param[NPARAM]; /* Parameters */ } ANSI; @@ -430,6 +430,10 @@ #define OPT_DEC_LOCATOR 0 /* true if xterm supports VT220-style mouse events */ #endif +#ifndef OPT_DEC_RECTOPS +#define OPT_DEC_RECTOPS 0 /* true if xterm is configured for VT420 rectangles */ +#endif + #ifndef OPT_DEC_SOFTFONT #define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */ #endif @@ -494,6 +498,10 @@ #define OPT_MAXIMIZE 1 /* add actions for iconify ... maximize */ #endif +#ifndef OPT_MINI_LUIT +#define OPT_MINI_LUIT 0 /* true if xterm supports built-in mini-luit */ +#endif + #ifndef OPT_MOD_FKEYS #define OPT_MOD_FKEYS 1 /* modify cursor- and function-keys in normal mode */ #endif @@ -675,7 +683,7 @@ #if OPT_ISO_COLORS #define if_OPT_ISO_COLORS(screen, code) if(screen->colorMode) code -#define TERM_COLOR_FLAGS (term->flags & (BG_COLOR)) +#define TERM_COLOR_FLAGS (term->flags & (FG_COLOR|BG_COLOR)) #define COLOR_0 0 #define COLOR_1 1 #define COLOR_2 2 @@ -913,10 +921,18 @@ {RES_NAME(name), RES_CLASS(class), XtRInt, sizeof(int), \ RES_OFFSET(offset), XtRImmediate, (XtPointer) dftvalue} +#define Dres(name, class, offset, dftvalue) \ + {RES_NAME(name), RES_CLASS(class), XtRFloat, sizeof(float), \ + RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} + #define Sres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRString, sizeof(char *), \ RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} +#define Wres(name, class, offset, dftvalue) \ + {RES_NAME(name), RES_CLASS(class), XtRWidget, sizeof(Widget), \ + RES_OFFSET(offset), XtRWidget, (XtPointer) dftvalue} + /***====================================================================***/ #define BUF_SIZE 4096 @@ -1034,6 +1050,13 @@ char * fn; } XTermFonts; +typedef struct { + int top; + int left; + int bottom; + int right; +} XTermRect; + /* indices into save_modes[] */ typedef enum { DP_CRS_VISIBLE, @@ -1063,6 +1086,9 @@ #if OPT_BLINK_CURS DP_CRS_BLINK, #endif +#if OPT_TOOLBAR + DP_TOOLBAR, +#endif DP_LAST } SaveModes; @@ -1124,6 +1150,14 @@ Pixmap bdpix; /* ...cached border pixmap */ } SbInfo; +#if OPT_TOOLBAR +typedef struct { + Widget menu_bar; /* toolbar, if initialized */ + Dimension menu_height; /* ...and its height */ +} TbInfo; +#define VT100_TB_INFO(name) screen.fullVwin.tb_info.name +#endif + struct _vtwin { Window window; /* X window id */ int width; /* width of columns */ @@ -1140,8 +1174,8 @@ GC normalboldGC; /* normal painting, bold font */ GC reverseboldGC; /* reverse painting, bold font */ #if OPT_TOOLBAR - Widget menu_bar; /* toolbar, if initialized */ - Dimension menu_height; /* ...and its height */ + Boolean active; /* true if toolbars are used */ + TbInfo tb_info; /* toolbar information */ #endif }; @@ -1188,12 +1222,19 @@ int fonts_used; /* count items in double_fonts */ XTermFonts double_fonts[NUM_CHRSET]; #endif +#if OPT_DEC_RECTOPS + int cur_decsace; /* parameter for DECSACE */ +#endif #if OPT_WIDE_CHARS Boolean wide_chars; /* true when 16-bit chars */ Boolean vt100_graphics; /* true to allow vt100-graphics */ int utf8_mode; /* use UTF-8 decode/encode: 0-2 */ - int utf_count; /* state of utf_char */ - IChar utf_char; /* in-progress character */ + int latin9_mode; /* poor man's luit, latin9 */ + int unicode_font; /* font uses unicode encoding */ + int utf_count; /* state of utf_char */ + IChar utf_char; /* in-progress character */ + int last_written_col; + int last_written_row; #endif #if OPT_BROKEN_OSC Boolean brokenLinuxOSC; /* true to ignore Linux palette ctls */ @@ -1253,6 +1294,9 @@ struct _vtwin iconVwin; struct _vtwin * whichVwin; #endif /* NO_ACTIVE_ICON */ +#if OPT_TOOLBAR + Boolean toolbars; /* true if toolbars are used */ +#endif Cursor pointer_cursor; /* pointer cursor in window */ @@ -1451,7 +1495,6 @@ String menu_font_names[NMENUFONTS]; long menu_font_sizes[NMENUFONTS]; int menu_font_number; - XIC xic; #if OPT_RENDERFONT XftFont * renderFontNorm[NMENUFONTS]; XftFont * renderFontBold[NMENUFONTS]; @@ -1460,9 +1503,11 @@ XftDraw * renderDraw; #endif #if OPT_INPUT_METHOD + XIM xim; XFontSet fs; /* fontset for XIM preedit */ int fs_ascent; /* ascent of fs */ #endif + XIC xic; /* this is used even without XIM */ #if OPT_DABBREV int dabbrev_working; /* nonzero during dabbrev process */ unsigned char dabbrev_erase_char; /* used for deleting inserted completion */ @@ -1475,8 +1520,7 @@ char * initial_font; /* large, 2, 3, small */ char * gin_terminator_str; /* ginTerminator resource */ #if OPT_TOOLBAR - Widget menu_bar; /* toolbar, if initialized */ - Dimension menu_height; /* ...and its height */ + TbInfo tb_info; /* toolbar information */ #endif } TekPart; @@ -1604,7 +1648,7 @@ #if OPT_RENDERFONT char *face_name; char *face_wide_name; - int face_size; + float face_size; Boolean render_font; #endif } Misc; @@ -1697,7 +1741,7 @@ screen. Used to distinguish blanks from empty parts of the screen when selecting */ -#if OPT_BLINK_CURS +#if OPT_BLINK_TEXT #define BOLDATTR(screen) (BOLD | ((screen)->blink_as_bold ? BLINK : 0)) #else #define BOLDATTR(screen) (BOLD | BLINK) @@ -1720,6 +1764,9 @@ /* mask: user-visible attributes */ #define ATTRIBUTES (INVERSE|UNDERLINE|BOLD|BLINK|BG_COLOR|FG_COLOR|INVISIBLE|PROTECTED) + /* mask for video-attributes only */ +#define SGR_MASK (BOLD|BLINK|UNDERLINE|INVERSE) + #define WRAPAROUND 0x400 /* true if auto wraparound mode */ #define REVERSEWRAP 0x800 /* true if reverse wraparound mode */ #define REVERSE_VIDEO 0x1000 /* true if screen white on black */ @@ -1767,60 +1814,61 @@ #define CursorY(screen,row) ((((row) - screen->topline) * FontHeight(screen)) \ + screen->border) +/* + * These definitions depend on whether xterm supports active-icon. + */ #ifndef NO_ACTIVE_ICON #define IsIcon(screen) ((screen)->whichVwin == &(screen)->iconVwin) -#define VWindow(screen) ((screen)->whichVwin->window) -#define VShellWindow XtWindow(SHELL_OF(term)) -#define TWindow(screen) ((screen)->whichTwin->window) -#define TShellWindow XtWindow(SHELL_OF(tekWidget)) -#define Width(screen) ((screen)->whichVwin->width) -#define Height(screen) ((screen)->whichVwin->height) -#define FullWidth(screen) ((screen)->whichVwin->fullwidth) -#define FullHeight(screen) ((screen)->whichVwin->fullheight) -#define FontWidth(screen) ((screen)->whichVwin->f_width) -#define FontHeight(screen) ((screen)->whichVwin->f_height) +#define WhichVWin(screen) ((screen)->whichVwin) +#define WhichTWin(screen) ((screen)->whichTwin) + +#define WhichVFont(screen,name) (IsIcon(screen) ? (screen)->fnt_icon \ + : (screen)->name) #define FontAscent(screen) (IsIcon(screen) ? (screen)->fnt_icon->ascent \ - : (screen)->whichVwin->f_ascent) + : WhichVWin(screen)->f_ascent) #define FontDescent(screen) (IsIcon(screen) ? (screen)->fnt_icon->descent \ - : (screen)->whichVwin->f_descent) -#define ScrollbarWidth(screen) ((screen)->whichVwin->sb_info.width) -#define NormalGC(screen) ((screen)->whichVwin->normalGC) -#define ReverseGC(screen) ((screen)->whichVwin->reverseGC) -#define NormalBoldGC(screen) ((screen)->whichVwin->normalboldGC) -#define ReverseBoldGC(screen) ((screen)->whichVwin->reverseboldGC) -#define TWidth(screen) ((screen)->whichTwin->width) -#define THeight(screen) ((screen)->whichTwin->height) -#define TFullWidth(screen) ((screen)->whichTwin->fullwidth) -#define TFullHeight(screen) ((screen)->whichTwin->fullheight) -#define TekScale(screen) ((screen)->whichTwin->tekscale) - + : WhichVWin(screen)->f_descent) #else /* NO_ACTIVE_ICON */ #define IsIcon(screen) (False) -#define VWindow(screen) ((screen)->fullVwin.window) +#define WhichVWin(screen) (&((screen)->fullVwin)) +#define WhichTWin(screen) (&((screen)->fullTwin)) + +#define WhichVFont(screen,name) (&(screen)->name) +#define FontAscent(screen) WhichVWin(screen)->f_ascent +#define FontDescent(screen) WhichVWin(screen)->f_descent + +#endif /* NO_ACTIVE_ICON */ + +/* + * These definitions do not depend on whether xterm supports active-icon. + */ +#define VWindow(screen) WhichVWin(screen)->window #define VShellWindow XtWindow(SHELL_OF(term)) -#define TWindow(screen) ((screen)->fullTwin.window) +#define TWindow(screen) WhichTWin(screen)->window #define TShellWindow XtWindow(SHELL_OF(tekWidget)) -#define Width(screen) ((screen)->fullVwin.width) -#define Height(screen) ((screen)->fullVwin.height) -#define FullWidth(screen) ((screen)->fullVwin.fullwidth) -#define FullHeight(screen) ((screen)->fullVwin.fullheight) -#define FontWidth(screen) ((screen)->fullVwin.f_width) -#define FontHeight(screen) ((screen)->fullVwin.f_height) -#define FontAscent(screen) ((screen)->fullVwin.f_ascent) -#define FontDescent(screen) ((screen)->fullVwin.f_descent) -#define ScrollbarWidth(screen) ((screen)->fullVwin.sb_info.width) -#define NormalGC(screen) ((screen)->fullVwin.normalGC) -#define ReverseGC(screen) ((screen)->fullVwin.reverseGC) -#define NormalBoldGC(screen) ((screen)->fullVwin.normalboldGC) -#define ReverseBoldGC(screen) ((screen)->fullVwin.reverseboldGC) -#define TWidth(screen) ((screen)->fullTwin.width) -#define THeight(screen) ((screen)->fullTwin.height) -#define TFullWidth(screen) ((screen)->fullTwin.fullwidth) -#define TFullHeight(screen) ((screen)->fullTwin.fullheight) -#define TekScale(screen) ((screen)->fullTwin.tekscale) -#endif /* NO_ACTIVE_ICON */ +#define Width(screen) WhichVWin(screen)->width +#define Height(screen) WhichVWin(screen)->height +#define FullWidth(screen) WhichVWin(screen)->fullwidth +#define FullHeight(screen) WhichVWin(screen)->fullheight +#define FontWidth(screen) WhichVWin(screen)->f_width +#define FontHeight(screen) WhichVWin(screen)->f_height + +#define NormalFont(screen) WhichVFont(screen, fnt_norm) +#define BoldFont(screen) WhichVFont(screen, fnt_bold) + +#define ScrollbarWidth(screen) WhichVWin(screen)->sb_info.width +#define NormalGC(screen) WhichVWin(screen)->normalGC +#define ReverseGC(screen) WhichVWin(screen)->reverseGC +#define NormalBoldGC(screen) WhichVWin(screen)->normalboldGC +#define ReverseBoldGC(screen) WhichVWin(screen)->reverseboldGC + +#define TWidth(screen) WhichTWin(screen)->width +#define THeight(screen) WhichTWin(screen)->height +#define TFullWidth(screen) WhichTWin(screen)->fullwidth +#define TFullHeight(screen) WhichTWin(screen)->fullheight +#define TekScale(screen) WhichTWin(screen)->tekscale #if OPT_TEK4014 #define TEK_LINK_BLOCK_SIZE 1024 diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/resize.c x11r682/xc/programs/xterm/resize.c --- xc/programs/xterm/resize.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/resize.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,11 +1,13 @@ +/* $XTermId: resize.c,v 1.92 2004/12/01 01:27:47 tom Exp $ */ + /* * $Xorg: resize.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/resize.c,v 3.57 2004/04/03 22:26:26 dawes Exp $ */ +/* $XFree86: xc/programs/xterm/resize.c,v 3.58 2004/12/01 01:27:47 dickey Exp $ */ /* - * Copyright 2003 by Thomas E. Dickey + * Copyright 2003,2004 by Thomas E. Dickey * * All Rights Reserved * @@ -115,7 +117,7 @@ #define SHELL_C 1 #define SHELL_BOURNE 2 /* *INDENT-OFF* */ -struct { +static struct { char *name; int type; } shell_list[] = { @@ -131,58 +133,58 @@ }; /* *INDENT-ON* */ -char *emuname[EMULATIONS] = +static char *emuname[EMULATIONS] = { "VT100", "Sun", }; -char *myname; -int shell_type = SHELL_UNKNOWN; -char *getsize[EMULATIONS] = +static char *myname; +static int shell_type = SHELL_UNKNOWN; +static char *getsize[EMULATIONS] = { ESCAPE("7") ESCAPE("[r") ESCAPE("[999;999H") ESCAPE("[6n"), ESCAPE("[18t"), }; #if defined(USE_STRUCT_TTYSIZE) #elif defined(USE_STRUCT_WINSIZE) -char *getwsize[EMULATIONS] = +static char *getwsize[EMULATIONS] = { /* size in pixels */ 0, ESCAPE("[14t"), }; #endif /* USE_STRUCT_{TTYSIZE|WINSIZE} */ -char *restore[EMULATIONS] = +static char *restore[EMULATIONS] = { ESCAPE("8"), 0, }; -char *setname = ""; -char *setsize[EMULATIONS] = +static char *setname = ""; +static char *setsize[EMULATIONS] = { 0, ESCAPE("[8;%s;%st"), }; #ifdef USE_ANY_SYSV_TERMIO -struct termio tioorig; +static struct termio tioorig; #elif defined(USE_TERMIOS) -struct termios tioorig; +static struct termios tioorig; #else -struct sgttyb sgorig; +static struct sgttyb sgorig; #endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */ -char *size[EMULATIONS] = +static char *size[EMULATIONS] = { ESCAPE("[%d;%dR"), ESCAPE("[8;%d;%dt"), }; -char sunname[] = "sunsize"; -int tty; -FILE *ttyfp; +static char sunname[] = "sunsize"; +static int tty; +static FILE *ttyfp; #if defined(USE_STRUCT_TTYSIZE) #elif defined(USE_STRUCT_WINSIZE) -char *wsize[EMULATIONS] = +static char *wsize[EMULATIONS] = { 0, ESCAPE("[4;%hd;%hdt"), @@ -193,7 +195,7 @@ static SIGNAL_T resize_timeout(int sig); static int checkdigits(char *str); static void Usage(void); -static void readstring(FILE * fp, char *buf, char *str); +static void readstring(FILE *fp, char *buf, char *str); #undef US /* may conflict with curses.h */ @@ -530,7 +532,7 @@ } static void -readstring(register FILE * fp, register char *buf, char *str) +readstring(register FILE *fp, register char *buf, char *str) { register int last, c; #if !defined(USG) && !defined(__UNIXOS2__) diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/screen.c x11r682/xc/programs/xterm/screen.c --- xc/programs/xterm/screen.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/screen.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,3 +1,5 @@ +/* $XTermId: screen.c,v 1.149 2004/12/01 01:27:47 tom Exp $ */ + /* * $Xorg: screen.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $ */ @@ -54,7 +56,7 @@ * SOFTWARE. */ -/* $XFree86: xc/programs/xterm/screen.c,v 3.66 2004/03/04 02:21:56 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/screen.c,v 3.67 2004/12/01 01:27:47 dickey Exp $ */ /* screen.c */ @@ -71,6 +73,11 @@ #include +#define getMinRow(screen) ((term->flags & ORIGIN) ? (screen)->top_marg : 0) +#define getMaxRow(screen) ((term->flags & ORIGIN) ? (screen)->bot_marg : (screen)->max_row) +#define getMinCol(screen) 0 +#define getMaxCol(screen) ((screen)->max_col) + /* * Allocates memory for a 2-dimensional array of chars and returns a pointer * thereto. Each line is formed from a set of char arrays, with an index @@ -304,8 +311,17 @@ } #endif -int last_written_row = -1; -int last_written_col = -1; +/* + * Disown the selection and repaint the area that is highlighted so it is no + * longer highlighted. + */ +void +ScrnDisownSelection(TScreen * screen) +{ + if (ScrnHaveSelection(screen)) { + DisownSelection(term); + } +} /* * Writes str into buf at screen's current row and column. Characters are set @@ -332,10 +348,10 @@ int length = len; /* workaround for compiler bug? */ Char *attrs; int avail = screen->max_col - screen->cur_col + 1; - Char *col; + Char *chars; int wrappedbit; #if OPT_WIDE_CHARS - Char starcol, starcol2; + Char starcol1, starcol2; Char *comb1l = 0, *comb1h = 0, *comb2l = 0, *comb2h = 0; #endif @@ -350,7 +366,7 @@ if (length <= 0) return; - col = SCRN_BUF_CHARS(screen, screen->cur_row) + screen->cur_col; + chars = SCRN_BUF_CHARS(screen, screen->cur_row) + screen->cur_col; attrs = SCRN_BUF_ATTRS(screen, screen->cur_row) + screen->cur_col; if_OPT_WIDE_CHARS(screen, { @@ -374,15 +390,15 @@ wrappedbit = ScrnTstWrapped(screen, screen->cur_row); #if OPT_WIDE_CHARS - starcol = *col; - starcol2 = col[length - 1]; + starcol1 = *chars; + starcol2 = chars[length - 1]; #endif /* write blanks if we're writing invisible text */ if (flags & INVISIBLE) { - memset(col, ' ', length); + memset(chars, ' ', length); } else { - memcpy(col, str, length); /* This can stand for the present. If it + memcpy(chars, str, length); /* This can stand for the present. If it is wrong, we will scribble over it */ } @@ -396,16 +412,16 @@ #define ERROR_2 0x00 if_OPT_WIDE_CHARS(screen, { - Char *wc; + Char *char2; if (real_width != length) { - Char *c = col; - wc = SCRN_BUF_WIDEC(screen, screen->cur_row); - wc += screen->cur_col; - if (screen->cur_col && starcol == HIDDEN_LO && *wc == HIDDEN_HI - && iswide(c[-1] | (wc[-1] << 8))) { - c[-1] = ERROR_1; - wc[-1] = ERROR_2; + Char *char1 = chars; + char2 = SCRN_BUF_WIDEC(screen, screen->cur_row); + char2 += screen->cur_col; + if (screen->cur_col && starcol1 == HIDDEN_LO && *char2 == HIDDEN_HI + && iswide(char1[-1] | (char2[-1] << 8))) { + char1[-1] = ERROR_1; + char2[-1] = ERROR_2; } /* if we are overwriting the right hand half of a wide character, make the other half vanish */ @@ -414,32 +430,32 @@ if (str2) ch |= *str2 << 8; - *c = *str; - c++; + *char1 = *str; + char1++; str++; if (str2) { - *wc = *str2; + *char2 = *str2; str2++; } else - *wc = 0; - wc++; + *char2 = 0; + char2++; length--; if (iswide(ch)) { - *c = HIDDEN_LO; - *wc = HIDDEN_HI; - c++; - wc++; + *char1 = HIDDEN_LO; + *char2 = HIDDEN_HI; + char1++; + char2++; } } - if (*c == HIDDEN_LO - && *wc == HIDDEN_HI - && c[-1] == HIDDEN_LO - && wc[-1] == HIDDEN_HI) { - *c = ERROR_1; - *wc = ERROR_2; + if (*char1 == HIDDEN_LO + && *char2 == HIDDEN_HI + && char1[-1] == HIDDEN_LO + && char2[-1] == HIDDEN_HI) { + *char1 = ERROR_1; + *char2 = ERROR_2; } /* if we are overwriting the left hand half of a wide character, make the other half vanish */ @@ -447,26 +463,26 @@ else { - if ((wc = SCRN_BUF_WIDEC(screen, screen->cur_row)) != 0) { - wc += screen->cur_col; - if (screen->cur_col && starcol == HIDDEN_LO && *wc == HIDDEN_HI - && iswide(col[-1] | (wc[-1] << 8))) { - col[-1] = ERROR_1; - wc[-1] = ERROR_2; + if ((char2 = SCRN_BUF_WIDEC(screen, screen->cur_row)) != 0) { + char2 += screen->cur_col; + if (screen->cur_col && starcol1 == HIDDEN_LO && *char2 == HIDDEN_HI + && iswide(chars[-1] | (char2[-1] << 8))) { + chars[-1] = ERROR_1; + char2[-1] = ERROR_2; } /* if we are overwriting the right hand half of a wide character, make the other half vanish */ - if (col[length] == HIDDEN_LO && wc[length] == HIDDEN_HI && - iswide(starcol2 | (wc[length - 1] << 8))) { - col[length] = ERROR_1; - wc[length] = ERROR_2; + if (chars[length] == HIDDEN_LO && char2[length] == HIDDEN_HI && + iswide(starcol2 | (char2[length - 1] << 8))) { + chars[length] = ERROR_1; + char2[length] = ERROR_2; } /* if we are overwriting the left hand half of a wide character, make the other half vanish */ if ((flags & INVISIBLE) || (str2 == 0)) - memset(wc, 0, length); + memset(char2, 0, length); else - memcpy(wc, str2, length); + memcpy(char2, str2, length); } } }); @@ -497,8 +513,10 @@ else ScrnClrWrapped(screen, screen->cur_row); - last_written_col = screen->cur_col + real_width - 1; - last_written_row = screen->cur_row; + if_OPT_WIDE_CHARS(screen, { + screen->last_written_col = screen->cur_col + real_width - 1; + screen->last_written_row = screen->cur_row; + }); if_OPT_XMC_GLITCH(screen, { Resolve_XMC(screen); @@ -515,6 +533,8 @@ size_t len = ScrnPointers(screen, n); int last = (n * MAX_PTRS); + TRACE(("ScrnClearLines(where %d, n %d, size %d)\n", where, n, size)); + /* save n lines at where */ memcpy((char *) screen->save_ptr, (char *) &sb[MAX_PTRS * where], @@ -829,6 +849,9 @@ int wideness = 0; Char *widec = 0; #define WIDEC_PTR(cell) widec ? &widec[cell] : 0 +#define BLANK_CEL(cell) ((chars[cell] == ' ') && (widec == 0 || widec[cell] == 0)) +#else +#define BLANK_CEL(cell) (chars[cell] == ' ') #endif Char cs = 0; Char *chars; @@ -896,14 +919,16 @@ maxcol /= 2; } #endif - /* row does not intersect selection; don't hilite */ + /* + * If row does not intersect selection; don't hilite blanks. + */ if (!force) { while (col <= maxcol && (attrs[col] & ~BOLD) == 0 && - (chars[col] & ~040) == 0) + BLANK_CEL(col)) col++; while (col <= maxcol && (attrs[maxcol] & ~BOLD) == 0 && - (chars[maxcol] & ~040) == 0) + BLANK_CEL(maxcol)) maxcol--; } #if OPT_DEC_CHRSET @@ -1175,6 +1200,26 @@ } /* + * Call this wrapper to ScrnRefresh() when the data has changed. If the + * refresh region overlaps the selection, we will release the primary selection. + */ +void +ScrnUpdate(TScreen * screen, + int toprow, + int leftcol, + int nrows, + int ncols, + Bool force) /* ... leading/trailing spaces */ +{ + if (ScrnHaveSelection(screen) + && (toprow <= screen->endHRow) + && (toprow + nrows - 1 >= screen->startHRow)) { + ScrnDisownSelection(screen); + } + ScrnRefresh(screen, toprow, leftcol, nrows, ncols, force); +} + +/* * Sets the rows first though last of the buffer of screen to spaces. * Requires first <= last; first, last are rows of screen->buf. */ @@ -1312,7 +1357,7 @@ screen->topline = -screen->savedlines; screen->cur_row += move_down_by; screen->cursor_row += move_down_by; - ScrollSelection(screen, move_down_by); + ScrollSelection(screen, move_down_by, True); if (screen->alternate) SwitchBufPtrs(screen); /* put the pointers back */ @@ -1418,3 +1463,301 @@ return False; } + +/* + * Copy the rectangle boundaries into a struct, providing default values as + * needed. + */ +void +xtermParseRect(TScreen * screen, int nparams, int *params, XTermRect * target) +{ + memset(target, 0, sizeof(*target)); + target->top = (nparams > 0) ? params[0] : getMinRow(screen) + 1; + target->left = (nparams > 1) ? params[1] : getMinCol(screen) + 1; + target->bottom = (nparams > 2) ? params[2] : getMaxRow(screen) + 1; + target->right = (nparams > 3) ? params[3] : getMaxCol(screen) + 1; + TRACE(("parsed rectangle %d,%d %d,%d\n", + target->top, + target->left, + target->bottom, + target->right)); +} + +static Bool +validRect(TScreen * screen, XTermRect * target) +{ + TRACE(("comparing against screensize %dx%d\n", + getMaxRow(screen) + 1, + getMaxCol(screen) + 1)); + return (target != 0 + && target->top > getMinRow(screen) + && target->left > getMinCol(screen) + && target->top <= target->bottom + && target->left <= target->right + && target->top <= getMaxRow(screen) + 1 + && target->right <= getMaxCol(screen) + 1); +} + +/* + * Fills a rectangle with the given character and video-attributes. + */ +void +ScrnFillRectangle(TScreen * screen, XTermRect * target, Char value, unsigned flags) +{ + TRACE(("filling rectangle with '%c'\n", value)); + if (validRect(screen, target)) { + int left = target->left - 1; + int size = target->right - left; + int row; + + flags &= ATTRIBUTES; + flags |= CHARDRAWN; + for (row = target->bottom - 1; row >= (target->top - 1); row--) { + TRACE(("filling %d [%d..%d]\n", row, left + 1, left + size)); + memset(SCRN_BUF_ATTRS(screen, row) + left, flags, size); + memset(SCRN_BUF_CHARS(screen, row) + left, value, size); + if_OPT_WIDE_CHARS(screen, { + bzero(SCRN_BUF_WIDEC(screen, row) + left, size); + }); + } + ScrnUpdate(screen, + target->top - 1, + target->left - 1, + (target->bottom - target->top) + 1, + (target->right - target->left) + 1, + False); + } +} + +#if OPT_DEC_RECTOPS +/* + * Copies the source rectangle to the target location, including video + * attributes. + * + * This implementation ignores page numbers. + * + * The reference manual does not indicate if it handles overlapping copy + * properly - so we make a local copy of the source rectangle first, then apply + * the target from that. + */ +void +ScrnCopyRectangle(TScreen * screen, XTermRect * source, int nparam, int *params) +{ + TRACE(("copying rectangle\n")); + + if (validRect(screen, source)) { + XTermRect target; + xtermParseRect(screen, + ((nparam > 3) ? 2 : (nparam - 1)), + params + 1, + &target); + if (validRect(screen, &target)) { + int high = (source->bottom - source->top) + 1; + int wide = (source->right - source->left) + 1; + int size = (high * wide); + int row, col, n; + + Char *attrs = malloc(size); + Char *chars = malloc(size); + +#if OPT_WIDE_CHARS + Char *widec = malloc(size); + if (widec == 0) + return; +#endif + if (attrs == 0 + || chars == 0) + return; + + TRACE(("OK - make copy %dx%d\n", high, wide)); + target.bottom = target.top + (high - 1); + target.right = target.left + (wide - 1); + + for (row = source->top - 1; row < source->bottom; ++row) { + for (col = source->left - 1; col < source->right; ++col) { + n = ((1 + row - source->top) * wide) + (1 + col - source->left); + attrs[n] = SCRN_BUF_ATTRS(screen, row)[col] | CHARDRAWN; + chars[n] = SCRN_BUF_CHARS(screen, row)[col]; + if_OPT_WIDE_CHARS(screen, { + widec[n] = SCRN_BUF_WIDEC(screen, row)[col]; + }) + } + } + for (row = target.top - 1; row < target.bottom; ++row) { + for (col = target.left - 1; col < target.right; ++col) { + if (row >= getMinRow(screen) + && row <= getMaxRow(screen) + && col >= getMinCol(screen) + && col <= getMaxCol(screen)) { + n = ((1 + row - target.top) * wide) + (1 + col - target.left); + SCRN_BUF_ATTRS(screen, row)[col] = attrs[n]; + SCRN_BUF_CHARS(screen, row)[col] = chars[n]; + if_OPT_WIDE_CHARS(screen, { + SCRN_BUF_WIDEC(screen, row)[col] = widec[n]; + }) + } + } + } + free(attrs); + free(chars); +#if OPT_WIDE_CHARS + free(widec); +#endif + + ScrnUpdate(screen, + (target.top - 1), + (target.left - 1), + (target.bottom - target.top) + 1, + ((target.right - target.left) + 1), + False); + } + } +} + +/* + * Modifies the video-attributes only - so selection is unaffected. + */ +void +ScrnMarkRectangle(TScreen * screen, + XTermRect * target, + Bool reverse, + int nparam, + int *params) +{ + Bool exact = (screen->cur_decsace == 2); + + TRACE(("%s %s\n", + reverse ? "reversing" : "marking", + (exact + ? "rectangle" + : "region"))); + + if (validRect(screen, target)) { + int top = target->top - 1; + int bottom = target->bottom - 1; + int row, col; + int n; + + for (row = top; row <= bottom; ++row) { + int left = ((exact || (row == top)) + ? (target->left - 1) + : getMinCol(screen)); + int right = ((exact || (row == bottom)) + ? (target->right - 1) + : getMaxCol(screen)); + + TRACE(("marking %d [%d..%d]\n", row, left + 1, right + 1)); + for (col = left; col <= right; ++col) { + unsigned flags = SCRN_BUF_ATTRS(screen, row)[col]; + + for (n = 0; n < nparam; ++n) { +#if OPT_TRACE + if (row == top && col == left) + TRACE(("attr param[%d] %d\n", n + 1, params[n])); +#endif + if (reverse) { + switch (params[n]) { + case 1: + flags ^= BOLD; + break; + case 4: + flags ^= UNDERLINE; + break; + case 5: + flags ^= BLINK; + break; + case 7: + flags ^= INVERSE; + break; + } + } else { + switch (params[n]) { + case 0: + flags &= ~SGR_MASK; + break; + case 1: + flags |= BOLD; + break; + case 4: + flags |= UNDERLINE; + break; + case 5: + flags |= BLINK; + break; + case 7: + flags |= INVERSE; + break; + case 22: + flags &= ~BOLD; + break; + case 24: + flags &= ~UNDERLINE; + break; + case 25: + flags &= ~BLINK; + break; + case 27: + flags &= ~INVERSE; + break; + } + } + } +#if OPT_TRACE + if (row == top && col == left) + TRACE(("first mask-change is %#x\n", + SCRN_BUF_ATTRS(screen, row)[col] ^ flags)); +#endif + SCRN_BUF_ATTRS(screen, row)[col] = flags; + } + } + ScrnRefresh(screen, + (target->top - 1), + (exact ? (target->left - 1) : getMinCol(screen)), + (target->bottom - target->top) + 1, + (exact + ? ((target->right - target->left) + 1) + : (getMaxCol(screen) - getMinCol(screen) + 1)), + False); + } +} + +/* + * Resets characters to space, except where prohibited by DECSCA. Video + * attributes are untouched. + */ +void +ScrnWipeRectangle(TScreen * screen, + XTermRect * target) +{ + TRACE(("wiping rectangle\n")); + + if (validRect(screen, target)) { + int top = target->top - 1; + int bottom = target->bottom - 1; + int row, col; + + for (row = top; row <= bottom; ++row) { + int left = (target->left - 1); + int right = (target->right - 1); + + TRACE(("wiping %d [%d..%d]\n", row, left + 1, right + 1)); + for (col = left; col <= right; ++col) { + if (!((screen->protected_mode == DEC_PROTECT) + && (SCRN_BUF_ATTRS(screen, row)[col] & PROTECTED))) { + SCRN_BUF_ATTRS(screen, row)[col] |= CHARDRAWN; + SCRN_BUF_CHARS(screen, row)[col] = ' '; + if_OPT_WIDE_CHARS(screen, { + SCRN_BUF_WIDEC(screen, row)[col] = '\0'; + }) + } + } + } + ScrnUpdate(screen, + (target->top - 1), + (target->left - 1), + (target->bottom - target->top) + 1, + ((target->right - target->left) + 1), + False); + } +} +#endif /* OPT_DEC_RECTOPS */ diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/scrollbar.c x11r682/xc/programs/xterm/scrollbar.c --- xc/programs/xterm/scrollbar.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/scrollbar.c 2005-01-12 22:45:10.000000000 +0100 @@ -2,10 +2,10 @@ * $Xorg: scrollbar.c,v 1.4 2000/08/17 19:55:09 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.39 2003/10/20 00:58:55 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.40 2004/12/01 01:27:47 dickey Exp $ */ /* - * Copyright 2000-2002,2003 by Thomas E. Dickey + * Copyright 2000-2003,2004 by Thomas E. Dickey * * All Rights Reserved * @@ -95,10 +95,10 @@ XtGeometryResult geomreqresult; Dimension reqWidth, reqHeight, repWidth, repHeight; #ifndef NO_ACTIVE_ICON - struct _vtwin *saveWin = screen->whichVwin; + struct _vtwin *saveWin = WhichVWin(screen); /* all units here want to be in the normal font units */ - screen->whichVwin = &screen->fullVwin; + WhichVWin(screen) = &screen->fullVwin; #endif /* NO_ACTIVE_ICON */ /* @@ -209,7 +209,7 @@ XSetWMNormalHints(screen->display, XtWindow(XtParent(xw)), &sizehints); #endif #ifndef NO_ACTIVE_ICON - screen->whichVwin = saveWin; + WhichVWin(screen) = saveWin; #endif /* NO_ACTIVE_ICON */ } @@ -343,7 +343,7 @@ scrolling_copy_area(screen, scrolltop, scrollheight, -i); screen->topline = top; - ScrollSelection(screen, i); + ScrollSelection(screen, i, True); XClearArea( screen->display, @@ -621,7 +621,7 @@ Widget gw, XEvent * event GCC_UNUSED, String * params, - Cardinal * nparams) + Cardinal *nparams) { long amount; @@ -636,7 +636,7 @@ Widget gw, XEvent * event GCC_UNUSED, String * params, - Cardinal * nparams) + Cardinal *nparams) { long amount; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/testxmc.c x11r682/xc/programs/xterm/testxmc.c --- xc/programs/xterm/testxmc.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/testxmc.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,7 +1,7 @@ -/* $XTermId: testxmc.c,v 1.23 2004/04/18 20:49:43 tom Exp $ */ +/* $XTermId: testxmc.c,v 1.25 2004/12/01 01:27:47 tom Exp $ */ /* - * $XFree86: xc/programs/xterm/testxmc.c,v 3.10 2004/04/18 20:49:43 dickey Exp $ + * $XFree86: xc/programs/xterm/testxmc.c,v 3.11 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ @@ -220,7 +220,7 @@ row, col)); if (changed) { - ScrnRefresh(screen, screen->cur_row, 0, row + 1 - screen->cur_row, + ScrnUpdate(screen, screen->cur_row, 0, row + 1 - screen->cur_row, screen->max_col + 1, True); } } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/trace.c x11r682/xc/programs/xterm/trace.c --- xc/programs/xterm/trace.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/trace.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,7 +1,7 @@ -/* $XTermId: trace.c,v 1.53 2004/07/20 01:14:41 tom Exp $ */ +/* $XTermId: trace.c,v 1.56 2004/12/01 01:27:47 tom Exp $ */ /* - * $XFree86: xc/programs/xterm/trace.c,v 3.20 2004/07/20 01:14:41 dickey Exp $ + * $XFree86: xc/programs/xterm/trace.c,v 3.21 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ @@ -249,6 +249,8 @@ TRACE(("... xcelerat %#08lx\n", (long) xcelerat)); result = _XtPrintXlations(w, xlations, xcelerat, True); TRACE(("%s\n", result != 0 ? result : "(null)")); + if (result) + XFree(result); } else { TRACE(("none (widget is null)\n")); } @@ -347,7 +349,7 @@ static Boolean standard_option(char *opt) { - static char *table[] = + static const char *table[] = { "+rv", "+synchronous", diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/unicode/README x11r682/xc/programs/xterm/unicode/README --- xc/programs/xterm/unicode/README 2004-08-13 14:57:26.000000000 +0200 +++ xc/programs/xterm/unicode/README 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,5 @@ --- $XFree86: xc/programs/xterm/unicode/README,v 1.4 2000/11/01 01:12:47 dawes Exp $ +-- $XTermId: README,v 1.10 2004/12/01 01:27:49 tom Exp $ +-- $XFree86: xc/programs/xterm/unicode/README,v 1.5 2004/12/01 01:27:49 dickey Exp $ -- Thomas E. Dickey These are some scripts and datafiles used for generating tables used in the @@ -7,9 +8,9 @@ To run the convmap.pl script, you will need a copy of UnicodeData-Latest.txt which is currently available as - ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt + ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt -It is a large file (~460kb), so it is not included in this distribution. +It is a large file (~877kb), so it is not included in this distribution. convmap.pl is used to generate ../keysym2ucs.c, e.g., diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/unicode/make-precompose.sh x11r682/xc/programs/xterm/unicode/make-precompose.sh --- xc/programs/xterm/unicode/make-precompose.sh 2003-11-25 20:29:23.000000000 +0100 +++ xc/programs/xterm/unicode/make-precompose.sh 2005-01-12 22:45:10.000000000 +0100 @@ -1,6 +1,7 @@ #!/bin/sh -cat precompose.c.head -cut UnicodeData-Latest.txt -d ";" -f 1,6 | \ +# $XTermId: make-precompose.sh,v 1.4 2004/11/30 21:16:54 tom Exp $ +cat precompose.c.head | sed -e's/@/$/g' +cut UnicodeData.txt -d ";" -f 1,6 | \ grep ";[0-9,A-F]" | grep " " | \ sed -e "s/ /, 0x/;s/^/{ 0x/;s/;/, 0x/;s/$/},/" | (sort -k 3 || sort +2) cat precompose.c.tail diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/unicode/precompose.c.head x11r682/xc/programs/xterm/unicode/precompose.c.head --- xc/programs/xterm/unicode/precompose.c.head 2003-11-14 17:49:24.000000000 +0100 +++ xc/programs/xterm/unicode/precompose.c.head 2005-01-12 22:45:10.000000000 +0100 @@ -4,10 +4,12 @@ * DO NOT EDIT BY HAND! This is generated by the script * unicode/make-precompose.sh */ +/* @XTermId@ */ +/* @XFree86@ */ #include -struct { +static struct { int replacement; int base; int comb; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/util.c x11r682/xc/programs/xterm/util.c --- xc/programs/xterm/util.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/util.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,10 +1,10 @@ -/* $XTermId: util.c,v 1.196 2004/08/08 22:36:13 tom Exp $ */ +/* $XTermId: util.c,v 1.210 2004/12/01 01:27:47 tom Exp $ */ /* * $Xorg: util.c,v 1.3 2000/08/17 19:55:10 cpqbld Exp $ */ -/* $XFree86: xc/programs/xterm/util.c,v 3.85 2004/08/08 22:36:13 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/util.c,v 3.86 2004/12/01 01:27:47 dickey Exp $ */ /* * Copyright 1999-2003,2004 by Thomas E. Dickey @@ -158,7 +158,7 @@ } scrolling_copy_area(screen, scrolltop + screen->scroll_amt, scrollheight, screen->scroll_amt); - ScrollSelection(screen, -(screen->scroll_amt)); + ScrollSelection(screen, -(screen->scroll_amt), False); screen->scroll_amt = 0; screen->refresh_amt = 0; if (refreshheight > 0) { @@ -179,9 +179,9 @@ int amount = screen->refresh_amt; int row = screen->cur_row; - if (amount == 0) + if (amount == 0) { return (0); - if (amount > 0) { + } else if (amount > 0) { int bottom; if (row == (bottom = screen->bot_marg) - amount) { @@ -218,12 +218,17 @@ int scrolltop; int scrollheight; + TRACE(("xtermScroll count=%d\n", amount)); + screen->cursor_busy += 1; screen->cursor_moved = TRUE; if (screen->cursor_state) HideCursor(); + if (ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) + ScrnDisownSelection(screen); + if (amount > i) amount = i; @@ -241,7 +246,7 @@ } refreshheight = 0; } else { - ScrollSelection(screen, -(amount)); + ScrollSelection(screen, -(amount), False); if (amount == i) { ClearScreen(screen); screen->cursor_busy -= 1; @@ -328,12 +333,17 @@ int scrolltop; int scrollheight; + TRACE(("RevScroll count=%d\n", amount)); + screen->cursor_busy += 1; screen->cursor_moved = TRUE; if (screen->cursor_state) HideCursor(); + if (ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) + ScrnDisownSelection(screen); + if (amount > i) amount = i; @@ -400,11 +410,17 @@ int scrolltop; int scrollheight; - if (screen->cur_row < screen->top_marg || - screen->cur_row > screen->bot_marg) + if (!ScrnIsLineInMargins(screen, screen->cur_row - screen->topline)) return; + + TRACE(("InsertLine count=%d\n", n)); + if (screen->cursor_state) HideCursor(); + + if (ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) + ScrnDisownSelection(screen); + screen->do_wrap = 0; if (n > (i = screen->bot_marg - screen->cur_row + 1)) n = i; @@ -457,11 +473,17 @@ int scrolltop; int scrollheight; - if (screen->cur_row < screen->top_marg || - screen->cur_row > screen->bot_marg) + if (!ScrnIsLineInMargins(screen, screen->cur_row - screen->topline)) return; + + TRACE(("DeleteLine count=%d\n", n)); + if (screen->cursor_state) HideCursor(); + + if (ScrnAreLinesInSelection(screen, screen->top_marg, screen->bot_marg)) + ScrnDisownSelection(screen); + screen->do_wrap = 0; if (n > (i = screen->bot_marg - screen->cur_row + 1)) n = i; @@ -528,15 +550,23 @@ void InsertChar(TScreen * screen, int n) { - register int width; + int width; + int row = screen->cur_row - screen->topline; if (screen->cursor_state) HideCursor(); + + TRACE(("InsertChar count=%d\n", n)); + + if (ScrnHaveSelection(screen) + && ScrnIsLineInSelection(screen, row)) { + ScrnDisownSelection(screen); + } screen->do_wrap = 0; if (n > (width = screen->max_col + 1 - screen->cur_col)) n = width; - if (screen->cur_row - screen->topline <= screen->max_row) { + if (row <= screen->max_row) { if (!AddToRefresh(screen)) { int col = screen->max_col + 1 - n; if (screen->scroll_amt) @@ -557,12 +587,11 @@ col - screen->cur_col, n); - ClearCurBackground( - screen, - CursorY(screen, screen->cur_row), - CurCursorX(screen, screen->cur_row, screen->cur_col), - FontHeight(screen), - n * CurFontWidth(screen, screen->cur_row)); + ClearCurBackground(screen, + CursorY(screen, screen->cur_row), + CurCursorX(screen, screen->cur_row, screen->cur_col), + FontHeight(screen), + n * CurFontWidth(screen, screen->cur_row)); } } /* adjust screen->buf */ @@ -576,6 +605,7 @@ DeleteChar(TScreen * screen, int n) { int width; + int row = screen->cur_row - screen->topline; if (screen->cursor_state) HideCursor(); @@ -583,7 +613,14 @@ if (n > (width = screen->max_col + 1 - screen->cur_col)) n = width; - if (screen->cur_row - screen->topline <= screen->max_row) { + TRACE(("DeleteChar count=%d\n", n)); + + if (ScrnHaveSelection(screen) + && ScrnIsLineInSelection(screen, row)) { + ScrnDisownSelection(screen); + } + + if (row <= screen->max_row) { if (!AddToRefresh(screen)) { int col = screen->max_col + 1 - n; if (screen->scroll_amt) @@ -598,12 +635,11 @@ col - screen->cur_col, -n); - ClearCurBackground( - screen, - CursorY(screen, screen->cur_row), - CurCursorX(screen, screen->cur_row, col), - FontHeight(screen), - n * CurFontWidth(screen, screen->cur_row)); + ClearCurBackground(screen, + CursorY(screen, screen->cur_row), + CurCursorX(screen, screen->cur_row, col), + FontHeight(screen), + n * CurFontWidth(screen, screen->cur_row)); } } /* adjust screen->buf */ @@ -685,6 +721,16 @@ int rc = 1; int flags = TERM_COLOR_FLAGS; + TRACE(("ClearInLine(row=%d, col=%d, len=%d) vs %d..%d\n", + row, col, len, + screen->startHRow, + screen->startHCol)); + + if (ScrnHaveSelection(screen) + && ScrnIsLineInSelection(screen, row)) { + ScrnDisownSelection(screen); + } + /* * If we're clearing to the end of the line, we won't count this as * "drawn" characters. We'll only do cut/paste on "drawn" characters, @@ -745,12 +791,11 @@ if (!AddToRefresh(screen)) { if (screen->scroll_amt) FlushScroll(screen); - ClearCurBackground( - screen, - CursorY(screen, row), - CurCursorX(screen, row, col), - FontHeight(screen), - len * CurFontWidth(screen, row)); + ClearCurBackground(screen, + CursorY(screen, row), + CurCursorX(screen, row, col), + FontHeight(screen), + len * CurFontWidth(screen, row)); } } @@ -827,6 +872,8 @@ if (screen->cursor_state) HideCursor(); + + ScrnDisownSelection(screen); screen->do_wrap = 0; if ((top = -screen->topline) <= screen->max_row) { if (screen->scroll_amt) @@ -1068,10 +1115,13 @@ XExposeEvent *reply = (XExposeEvent *) event; #ifndef NO_ACTIVE_ICON - if (reply->window == screen->iconVwin.window) - screen->whichVwin = &screen->iconVwin; - else - screen->whichVwin = &screen->fullVwin; + if (reply->window == screen->iconVwin.window) { + WhichVWin(screen) = &screen->iconVwin; + TRACE(("HandleExposure - icon\n")); + } else { + WhichVWin(screen) = &screen->fullVwin; + TRACE(("HandleExposure - normal\n")); + } #endif /* NO_ACTIVE_ICON */ /* if not doing CopyArea or if this is a GraphicsExpose, don't translate */ @@ -1818,15 +1868,25 @@ /* * If we're reading UTF-8 from the client, we may have a - * line-drawing character. Translate it back to our box-code. + * line-drawing character. Translate it back to our box-code + * if it is really a line-drawing character (since the + * fonts used by Xft generally do not have correct glyphs), + * or if Xft can tell us that the glyph is really missing. */ if_OPT_WIDE_CHARS(screen, { - ch = ucs2dec(ch | (text2[last] << 8)); + int full = (ch | (text2[last] << 8)); + int part = ucs2dec(full); + if (xtermIsDecGraphic(part) && + (xtermIsLineDrawing(part) + || xtermXftMissing(font, full))) + ch = part; + else + ch = full; }); /* - * A value less than 32 has to be one of our box-codes. + * If we have one of our box-codes, draw it directly. */ - if (ch > 0 && ch < 32) { + if (xtermIsDecGraphic(ch)) { /* line drawing character time */ if (last > first) { xtermXftDrawString(screen, flags, @@ -1879,13 +1939,14 @@ * If we're asked to display a proportional font, do this with a fixed * pitch. Yes, it's ugly. But we cannot distinguish the use of xterm * as a dumb terminal vs its use as in fullscreen programs such as vi. + * Hint: do not try to use a proportional font in the icon. */ - if (!(flags & CHARBYCHAR) && screen->fnt_prop) { + if (!IsIcon(screen) && !(flags & CHARBYCHAR) && screen->fnt_prop) { int adj, width; GC fillGC = gc; /* might be cursorGC */ XFontStruct *fs = ((flags & BOLDATTR(screen)) - ? screen->fnt_bold - : screen->fnt_norm); + ? BoldFont(screen) + : NormalFont(screen)); #define GC_PAIRS(a,b) \ if (gc == a) fillGC = b; \ @@ -1920,19 +1981,20 @@ } #if OPT_BOX_CHARS /* If the font is incomplete, draw some substitutions */ - if (!(flags & NOTRANSLATION) + if (!IsIcon(screen) + && !(flags & NOTRANSLATION) && (!screen->fnt_boxes || screen->force_box_chars)) { /* Fill in missing box-characters. Find regions without missing characters, and draw them calling ourselves recursively. Draw missing characters via xtermDrawBoxChar(). */ XFontStruct *font = ((flags & BOLD) - ? screen->fnt_bold - : screen->fnt_norm); + ? BoldFont(screen) + : NormalFont(screen)); Cardinal last, first = 0; for (last = 0; last < len; last++) { unsigned ch = text[last]; - Boolean isMissing; + Bool isMissing; #if OPT_WIDE_CHARS if (text2 != 0) ch |= (text2[last] << 8); @@ -1990,14 +2052,15 @@ y += FontAscent(screen); #if OPT_WIDE_CHARS - if (screen->wide_chars) { + if (screen->wide_chars || screen->unicode_font) { int ascent_adjust = 0; static XChar2b *sbuf; static Cardinal slen; Cardinal n; int ch = text[0] | (text2[0] << 8); - int wideness = ((on_wide || iswide(ch) != 0) - && (screen->fnt_dwd != NULL)); + int wideness = (!IsIcon(screen) + && ((on_wide || iswide(ch) != 0) + && (screen->fnt_dwd != NULL))); unsigned char *endtext = text + len; if (slen < len) { slen = (len + 1) * 2; @@ -2006,6 +2069,32 @@ for (n = 0; n < len; n++) { sbuf[n].byte2 = *text; sbuf[n].byte1 = *text2; +#if OPT_MINI_LUIT +#define UCS2SBUF(n,value) sbuf[n].byte2 = (value & 0xff);\ + sbuf[n].byte1 = (value >> 8) +#define Map2Sbuf(n,from,to) (*text == from) { UCS2SBUF(n,to); } + if (screen->latin9_mode && !screen->utf8_mode && *text2 == 0) { + + /* see http://www.cs.tut.fi/~jkorpela/latin9.html */ + /* *INDENT-OFF* */ + if Map2Sbuf(n, 0xa4, 0x20ac) + else if Map2Sbuf(n, 0xa6, 0x0160) + else if Map2Sbuf(n, 0xa8, 0x0161) + else if Map2Sbuf(n, 0xb4, 0x017d) + else if Map2Sbuf(n, 0xb8, 0x017e) + else if Map2Sbuf(n, 0xbc, 0x0152) + else if Map2Sbuf(n, 0xbd, 0x0153) + else if Map2Sbuf(n, 0xbe, 0x0178) + /* *INDENT-ON* */ + + } + if (screen->unicode_font + && *text2 == 0 + && (*text == 0x7f || *text < 0x20)) { + int ni = dec2ucs(*text == 0x7f ? 0 : *text); + UCS2SBUF(n, ni); + } +#endif /* OPT_MINI_LUIT */ text++; text2++; if (wideness) { @@ -2031,17 +2120,19 @@ if ((flags & BOLDATTR(screen)) != 0 && screen->fnt_dwdb->fid) { XSetFont(screen->display, gc, screen->fnt_dwdb->fid); - ascent_adjust = screen->fnt_dwdb->ascent - screen->fnt_norm->ascent; + ascent_adjust = (screen->fnt_dwdb->ascent + - NormalFont(screen)->ascent); } else { XSetFont(screen->display, gc, screen->fnt_dwd->fid); - ascent_adjust = screen->fnt_dwd->ascent - screen->fnt_norm->ascent; + ascent_adjust = (screen->fnt_dwd->ascent + - NormalFont(screen)->ascent); } /* fix ascent */ } else if ((flags & BOLDATTR(screen)) != 0 - && screen->fnt_bold->fid) { - XSetFont(screen->display, gc, screen->fnt_bold->fid); + && BoldFont(screen)->fid) { + XSetFont(screen->display, gc, BoldFont(screen)->fid); } else { - XSetFont(screen->display, gc, screen->fnt_norm->fid); + XSetFont(screen->display, gc, NormalFont(screen)->fid); } if (flags & NOBACKGROUND) @@ -2245,29 +2336,25 @@ * Using the "current" SGR background, clear a rectangle. */ void -ClearCurBackground( - TScreen * screen, - int top, - int left, - unsigned height, - unsigned width) -{ - XSetWindowBackground( - screen->display, - VWindow(screen), - getXtermBackground(term->flags, term->cur_background)); +ClearCurBackground(TScreen * screen, + int top, + int left, + unsigned height, + unsigned width) +{ + XSetWindowBackground(screen->display, + VWindow(screen), + getXtermBackground(term->flags, term->cur_background)); XClearArea(screen->display, VWindow(screen), left, top, width, height, FALSE); - XSetWindowBackground( - screen->display, - VWindow(screen), - getXtermBackground(term->flags, MAXCOLORS)); + XSetWindowBackground(screen->display, + VWindow(screen), + getXtermBackground(term->flags, MAXCOLORS)); } #endif /* OPT_ISO_COLORS */ -#if OPT_WIDE_CHARS /* * Returns a single 8/16-bit number for the given cell */ @@ -2281,22 +2368,6 @@ return ch; } -unsigned -getXtermCellComb1(TScreen * screen, int row, int col) -{ - unsigned ch = SCRN_BUF_COM1L(screen, row)[col]; - ch |= (SCRN_BUF_COM1H(screen, row)[col] << 8); - return ch; -} - -unsigned -getXtermCellComb2(TScreen * screen, int row, int col) -{ - unsigned ch = SCRN_BUF_COM2L(screen, row)[col]; - ch |= (SCRN_BUF_COM2H(screen, row)[col] << 8); - return ch; -} - /* * Sets a single 8/16-bit number for the given cell */ @@ -2313,6 +2384,23 @@ }); } +#if OPT_WIDE_CHARS +unsigned +getXtermCellComb1(TScreen * screen, int row, int col) +{ + unsigned ch = SCRN_BUF_COM1L(screen, row)[col]; + ch |= (SCRN_BUF_COM1H(screen, row)[col] << 8); + return ch; +} + +unsigned +getXtermCellComb2(TScreen * screen, int row, int col) +{ + unsigned ch = SCRN_BUF_COM2L(screen, row)[col]; + ch |= (SCRN_BUF_COM2H(screen, row)[col] << 8); + return ch; +} + /* * Add a combining character for the given cell */ @@ -2446,7 +2534,7 @@ visibleKeyboardType(term->keyboard.type))); if (set) { if (wasSet) { - fprintf(stderr, "Conflicting keyboard type option (%d/%d)\n", + fprintf(stderr, "Conflicting keyboard type option (%u/%u)\n", term->keyboard.type, type); } term->keyboard.type = type; diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/uxterm x11r682/xc/programs/xterm/uxterm --- xc/programs/xterm/uxterm 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/uxterm 2005-01-12 22:45:10.000000000 +0100 @@ -1,9 +1,10 @@ #!/bin/sh -# $XTermId: uxterm,v 1.15 2004/07/13 00:41:30 tom Exp $ -# $XFree86: xc/programs/xterm/uxterm,v 1.9 2004/07/13 00:41:30 dickey Exp $ +# $XTermId: uxterm,v 1.18 2004/12/01 01:27:47 tom Exp $ +# $XFree86: xc/programs/xterm/uxterm,v 1.10 2004/12/01 01:27:47 dickey Exp $ # wrapper script to setup xterm with UTF-8 locale program=xterm +locale=`(LC_ALL=C LC_CTYPE=C LANG=C locale >/dev/null) 2>&1` found=no # Check for -version and -help options, to provide a simple return without @@ -46,11 +47,21 @@ # user's shell does not reset unknown locale specifiers, but not all shells do. if test $found != yes ; then if test -n "$value" ; then - eval ${name}=`echo ${value} |sed -e 's/[.@].*//'`.UTF-8 - eval export ${name} + value=`echo ${value} |sed -e 's/[.@].*//'`.UTF-8 else - LC_CTYPE=en_US.UTF-8 - export LC_CTYPE + name="LC_CTYPE" + value="en_US.UTF-8" + fi + eval ${name}=${value} + eval export ${name} + if test -z "$locale" ; then + # The 'locale' program tries to do a sanity check. + check=`(locale >/dev/null) 2>&1` + if test -n "$check" ; then + echo "uxterm tried to use locale $value" >&2 + echo "$check" >&2 + exit 1 + fi fi fi diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/version.h x11r682/xc/programs/xterm/version.h --- xc/programs/xterm/version.h 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/version.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,5 +1,5 @@ -/* $XTermId: version.h,v 1.233 2004/08/15 21:07:59 tom Exp $ */ -/* $XFree86: xc/programs/xterm/version.h,v 3.107 2004/08/15 21:07:59 dickey Exp $ */ +/* $XTermId: version.h,v 1.235 2004/12/01 01:27:47 tom Exp $ */ +/* $XFree86: xc/programs/xterm/version.h,v 3.108 2004/12/01 01:27:47 dickey Exp $ */ /* * These definitions are used to build the string that's printed in response to @@ -7,7 +7,7 @@ * version of X to which this version of xterm has been built. The number in * parentheses is my patch number (T.Dickey). */ -#define XTERM_PATCH 196 +#define XTERM_PATCH 197 #ifndef __vendorversion__ #define __vendorversion__ "XTerm" diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xstrings.c x11r682/xc/programs/xterm/xstrings.c --- xc/programs/xterm/xstrings.c 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/xstrings.c 2005-01-12 22:45:10.000000000 +0100 @@ -1,8 +1,10 @@ -/* $XFree86: xc/programs/xterm/xstrings.c,v 1.7 2003/11/13 01:16:38 dickey Exp $ */ +/* $XTermId: xstrings.c,v 1.20 2004/12/01 01:27:47 tom Exp $ */ + +/* $XFree86: xc/programs/xterm/xstrings.c,v 1.8 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ -Copyright 2000-2002,2003 by Thomas E. Dickey +Copyright 2000-2003,2004 by Thomas E. Dickey All Rights Reserved @@ -62,7 +64,9 @@ return 1; while (len-- != 0) { - if (toupper(CharOf(*s1)) != toupper(CharOf(*s2))) + int c1 = toupper(CharOf(*s1)); + int c2 = toupper(CharOf(*s2)); + if (c1 != c2) return 1; s1++, s2++; } diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xterm.h x11r682/xc/programs/xterm/xterm.h --- xc/programs/xterm/xterm.h 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/xterm.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,6 +1,6 @@ -/* $XTermId: xterm.h,v 1.291 2004/07/13 00:41:30 tom Exp $ */ +/* $XTermId: xterm.h,v 1.306 2004/12/01 01:27:47 tom Exp $ */ -/* $XFree86: xc/programs/xterm/xterm.h,v 3.102 2004/07/13 00:41:30 dickey Exp $ */ +/* $XFree86: xc/programs/xterm/xterm.h,v 3.103 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ @@ -260,7 +260,7 @@ #include #include -#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) +#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun) #include #define USE_XPOLL_H 1 #else @@ -405,6 +405,7 @@ #define XtNtekInhibit "tekInhibit" #define XtNtekSmall "tekSmall" #define XtNtekStartup "tekStartup" +#define XtNtoolBar "toolBar" #define XtNtiXtraScroll "tiXtraScroll" #define XtNtiteInhibit "titeInhibit" #define XtNtrimSelection "trimSelection" @@ -520,6 +521,7 @@ #define XtCTiXtraScroll "TiXtraScroll" #define XtCTiteInhibit "TiteInhibit" #define XtCTrimSelection "TrimSelection" +#define XtCToolBar "ToolBar" #define XtCUnderLine "UnderLine" #define XtCUtf8 "Utf8" #define XtCVT100Graphics "VT100Graphics" @@ -588,7 +590,7 @@ extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS; extern void ReadLineButton PROTO_XT_ACTIONS_ARGS; extern void ResizeSelection (TScreen *screen, int rows, int cols); -extern void ScrollSelection (TScreen* screen, int amount); +extern void ScrollSelection (TScreen* screen, int amount, Bool); extern void TrackMouse (int func, int startrow, int startcol, int firstrow, int lastrow); extern void TrackText (int frow, int fcol, int trow, int tcol); extern void ViButton PROTO_XT_ACTIONS_ARGS; @@ -672,10 +674,6 @@ extern int xtermcapKeycode(char *params, unsigned *state); #endif -#if OPT_WIDE_CHARS -extern int convertFromUTF8(unsigned long c, Char *strbuf); -#endif - /* main.c */ #ifndef __UNIXOS2__ #define ENVP_ARG /**/ @@ -814,9 +812,13 @@ extern void ScreenWrite (TScreen *screen, PAIRED_CHARS(Char *str, Char *str2), unsigned flags, unsigned cur_fg_bg, int length); extern void ScrnDeleteChar (TScreen *screen, int n); extern void ScrnDeleteLine (TScreen *screen, ScrnBuf sb, int n, int last, int size, int where); +extern void ScrnFillRectangle (TScreen *, XTermRect *, Char, unsigned); extern void ScrnInsertChar (TScreen *screen, int n); extern void ScrnInsertLine (TScreen *screen, ScrnBuf sb, int last, int where, int n, int size); extern void ScrnRefresh (TScreen *screen, int toprow, int leftcol, int nrows, int ncols, Bool force); +extern void ScrnUpdate (TScreen *screen, int toprow, int leftcol, int nrows, int ncols, Bool force); +extern void ScrnDisownSelection (TScreen *screen); +extern void xtermParseRect (TScreen *, int, int *, XTermRect *); #define ScrnClrFlag(screen, row, flag) \ SCRN_BUF_FLAGS(screen, row + screen->topline) = \ @@ -837,6 +839,29 @@ #define ScrnSetWrapped(screen, row) ScrnSetFlag(screen, row, LINEWRAPPED) #define ScrnTstWrapped(screen, row) ScrnTstFlag(screen, row, LINEWRAPPED) +#define ScrnHaveSelection(screen) \ + ((screen)->startHRow != (screen)->endHRow \ + || (screen)->startHCol != (screen)->endHCol) + +#define ScrnAreLinesInSelection(screen, first, last) \ + ((last) >= (screen)->startHRow && (first) <= (screen)->endHRow) + +#define ScrnIsLineInSelection(screen, line) \ + ((line) >= (screen)->startHRow && (line) <= (screen)->endHRow) + +#define ScrnHaveLineMargins(screen) \ + ((screen)->top_marg != 0 \ + || ((screen)->bot_marg != screen->max_row)) + +#define ScrnIsLineInMargins(screen, line) \ + ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg) + +#if OPT_DEC_RECTOPS +extern void ScrnCopyRectangle (TScreen *, XTermRect *, int, int *); +extern void ScrnMarkRectangle (TScreen *, XTermRect *, Bool, int, int *); +extern void ScrnWipeRectangle (TScreen *, XTermRect *); +#endif + #if OPT_WIDE_CHARS extern void ChangeToWide(TScreen * screen); #endif @@ -974,15 +999,13 @@ #define curXtermChrSet(row) 0 #endif -#if OPT_WIDE_CHARS extern unsigned getXtermCell (TScreen *screen, int row, int col); +extern void putXtermCell (TScreen *screen, int row, int col, int ch); + +#if OPT_WIDE_CHARS extern unsigned getXtermCellComb1 (TScreen *screen, int row, int col); extern unsigned getXtermCellComb2 (TScreen *screen, int row, int col); extern void addXtermCombining (TScreen *screen, int row, int col, unsigned ch); -extern void putXtermCell (TScreen *screen, int row, int col, int ch); -#else -#define getXtermCell(screen,row,col) SCRN_BUF_CHARS(screen, row)[col] -#define putXtermCell(screen,row,col,ch) SCRN_BUF_CHARS(screen, row)[col] = ch #endif #if OPT_XMC_GLITCH diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xterm.log.html x11r682/xc/programs/xterm/xterm.log.html --- xc/programs/xterm/xterm.log.html 2004-08-20 20:46:39.000000000 +0200 +++ xc/programs/xterm/xterm.log.html 2005-01-12 22:45:10.000000000 +0100 @@ -20,8 +20,8 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ***************************************************************************** - $XTermId: xterm.log.html,v 1.173 2004/08/15 21:07:59 tom Exp $ - $XFree86: xc/programs/xterm/xterm.log.html,v 1.130 2004/08/15 21:07:59 dickey Exp $ + $XTermId: xterm.log.html,v 1.191 2004/12/01 01:27:47 tom Exp $ + $XFree86: xc/programs/xterm/xterm.log.html,v 1.131 2004/12/01 01:27:47 dickey Exp $ --> @@ -46,6 +46,7 @@ is the latest version of this file. +

      Patch #197 - 2004/11/30 - XFree86 4.4.99.19

      +
        +
      • modify configure script to remove empty "-DPROJECTROOT=" definition + which resulted unusable values for luit's default path. + +
      • update precompose.c based on Unicode 4.0.1 + +
      • several minor fixes based on Intel compiler warnings. + +
      • change default translations so a BtnDown which is + not recognized is simply ignored rather than emitting a bell. + That makes it less obtrusive when the user tries to use a mouse + which provides more capabilities than the X mouse driver supports, + e.g., one with a horizontal scroll wheel (Debian #265133). + +
      • note in xterm's manpage that translations is not + specific to xterm (Debian #278897). + +
      • modify uxterm script to use locale program to verify if the + derived locale is installed (Debian #246398). + +
      • correct font handling for active icon when in UTF-8 mode (report + by Paolo Liberatore). + +
      • make active-icon and toolbar configurations work together. + +
      • modify the criteria for disowning primary selection. Previously, + this happened anytime the cursor was moved before the end of the + selection. That would ensure that any insert/delete of char or + line, as well as scrolling, would disown the selection. The + new criteria change this to checking if the operations would + modify the data which is highlighted (Debian #277832). + +
      • reimplement DECALN with functions for vt420 rectangles, + fixes selection for this case. + +
      • implement vt420 rectangle operations. + +
      • add parsing, for debug/test of vt220 soft-fonts. + +
      • add menu entry, actions and escape sequence to allow + enabling/disabling toolbars at runtime. + +
      • improve rendering for Xft, allow it to draw non-linedrawing + characters such as "pi", which were drawn from internal tables + with patch #180 + (Freedesktop.org Bugzilla #1260). + +
      • add configure option --enable-mini-luit, ifdef'd the + mini-luit feature with OPT_MINI_LUIT. + +
      • add mini-luit feature, which supports Latin9 directly rather than + via luit, provided that Unicode fonts are used (Freedesktop.org + Bugzilla #1571, request by Stefan Dirsch, patch by Michael + Schroeder). + +
      • for Linux, if IUTF8 is defined, e.g., on recent 2.6.x kernels, + set the corresponding flag for the slave pty, to enable UTF-8 + interpretation of backspace in cooked mode (Freedesktop.org + Bugzilla #1578, request by Stefan Dirsch). + +
      • modify faceSize resource to use a floating-point + internal value (adapted from patch by Sam Stephenson). + +
      • correct handling selection of tabs over cleared space in UTF-8 + mode. In this special case, xterm represents the whitespace with + a null rather than a space character (Debian #276477). + +
      • amend fix for infinite loop from patch + #192 to check if there is wrapped text to output in a following + iteration (Debian #273202). + +
      • fixes ifdef'd with __INTERIX to allow building with + Interix (Windows Services for UNIX) 3.5 using the xlibs libraries + from freedesktop.org (patch by Min Sik Kim). + +
      • amend solution for Debian #252873, #260471 from patch #192 by making the cursor not + explicitly colored if only the foreground color is set, and the + cursor is on a blank space (Debian #275473). + +
      • correct logic for send/receive mode (SRM) with regard to control + characters. + +
      • fix masking of invisible text in wide-character mode, which did + not work for line-drawing characters. + +
      • incorporate CF_XOPEN_SOURCE into configure script, replacing + CF_GNU_SOURCE. +
      +

      Patch #196 - 2004/8/15 - XFree86 4.4.99.12

      • add a special case to configure script to ignore NetBSD's @@ -637,7 +729,7 @@ ways the window can be resized if fixed fonts are used. The relative font sizes are derived from the fixed font sizes. -
      • add menu items and corresponding actions for switching on/off +
      • add menu items and corresponding actions for switching on/off the UTF-8 mode and Xft (TrueType) support.
      • add logic to handle switching UTF-8 mode on/off. It worked if @@ -823,7 +915,7 @@
    • make height of TrueType fonts match ascent+descent (patch by - Keith Packard). + Keith Packard).
    • correct configure-script check for imake $CFLAGS, which did not check properly if imake was not available. @@ -930,10 +1022,10 @@
    • correct/extend some of the keypad description in ctlseqs.ms (report by Henning Makholm). -
    • correct keypad-mapping table in input.c so XK_KP_Equal +
    • correct keypad-mapping table in input.c so XK_KP_Equal works (report by Henning Makholm). -
    • modified to work with CJK double-width (bi-width/monospace) fonts. +
    • modified to work with CJK double-width (bi-width/monospace) fonts. They're similar to Roman Czbora and David Starner's gnuunifonts in that Latin letters and numbers have all the same width which is exactly the half of the width of East Asian characters. (patch by @@ -1040,10 +1132,10 @@ resources that override colors when a video attribute is set to ColorAttrMode, to make them distinct from ColorMode. This avoids an unexpected - rendering of reverse video, for example (report by Paul Fox). + rendering of reverse video, for example (report by Paul Fox).
    • changed class of veryBoldColors to - VeryBoldColors, since + VeryBoldColors, since ColorMode is associated with boolean resources.
    • add option -k8 and resource @@ -1074,7 +1166,7 @@
    • modify uxterm script to strip modifiers such as "@euro" from the locale setting before adding ".UTF-8" (Debian #179929). -
    • modify the remaining places where tek4014 emulation uses +
    • modify the remaining places where tek4014 emulation uses XDefineCursor(), to make it work as originally implemented, e.g., when switching back to alpha mode. Added test-screen in vttest to test this feature properly. @@ -1083,7 +1175,7 @@

      Patch #174 - 2003/2/25 - XFree86 4.2.99.903

      • work-around for XFree86 bug which made XDefineCursor() - on a shell-window no longer work. The tek4014 emulation used this. + on a shell-window no longer work. The tek4014 emulation used this. Use the next lower window (report by Karl Rudolf Bauchspiess).
      • add a resource setting to control whether the extended window @@ -1117,7 +1209,7 @@
      • merge Error() calls and some exit() calls into SysError(), and change that to add the brief - explanation for each error code which is provided in the manpage. + explanation for each error code which is provided in the manpage. Change a few SysError(), calls to avoid using code 1, to avoid confusion with exit status from places that do not use SysError(). @@ -1253,7 +1345,7 @@
      • add -into option, for embedding xterm in a Tcl/Tk application (patch by George Peter Staplin <georgeps@xmission.com>). -
      • add simple session management (XSM) client capabilities to xterm. +
      • add simple session management (XSM) client capabilities to xterm. So a session manager such as, e.g., xsm, should be able to respawn or kill xterms without the help of an SM proxy (like smproxy), which is a hack and almost always buggy (patch by David Madore). @@ -1520,7 +1612,7 @@ Nelson Beebe).
      • modify xterm manual page and minstall.sh to allow imake rules - to define location of app-defaults directory (Debian #87611). + to define location of app-defaults directory (Debian #87611).
      • review/update list of conflicting preprocesor symbols to remove from $CPPFLAGS at the end of the configure script. In particular, diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xterm.man x11r682/xc/programs/xterm/xterm.man --- xc/programs/xterm/xterm.man 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/xterm.man 2005-01-12 22:45:10.000000000 +0100 @@ -1,4 +1,4 @@ -.\" $XTermId: xterm.man,v 1.279 2004/07/28 00:53:26 tom Exp $ +.\" $XTermId: xterm.man,v 1.288 2004/12/01 01:27:47 tom Exp $ .\" $Xorg: xterm.man,v 1.4 2001/02/09 02:06:03 xorgcvs Exp $ .\" .\" @@ -55,7 +55,7 @@ .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" -.\" $XFree86: xc/programs/xterm/xterm.man,v 3.109 2004/07/28 00:53:26 dickey Exp $ +.\" $XFree86: xc/programs/xterm/xterm.man,v 3.110 2004/12/01 01:27:47 dickey Exp $ .\" .\" updated by Thomas E. Dickey for XFree86, July 1996 - July 2004. .TH XTERM 1 __vendorversion__ @@ -201,11 +201,12 @@ .SH OPTIONS The \fIxterm\fP terminal emulator accepts all of the standard X Toolkit command line options as well as -the following (if the option begins with a +the following. +If the option begins with a .RB ` + ' instead of a .RB ` - ', -the option is restored to its default value). +the option is restored to its default value. The \fB-version\fP and \fB-help\fP options are interpreted even if \fIxterm\fP cannot open the display, and are useful for testing and configuration scripts: .TP 8 @@ -797,8 +798,13 @@ .BI -tn " name" This option specifies the name of the terminal type to be set in the TERM environment variable. -This terminal type must exist in the \fItermcap(5)\fP -database and should have \fIli#\fP and \fIco#\fP entries. +It corresponds to the \fBtermName\fP resource. +This terminal type must exist in the terminal +database +(termcap or terminfo, depending on how \fIxterm\fP is built) +and should have \fIli#\fP and \fIco#\fP entries. +If the terminal type is not found, \fIxterm\fP uses the built-in list +``xterm'', ``vt102'', etc. .TP 8 .B -u8 This option sets the \fButf8\fP resource. @@ -1122,7 +1128,7 @@ Allowable keywords include: brk, dsusp, -eof, +eof, eol, eol2, erase, @@ -1551,6 +1557,7 @@ .B "decTerminalID (\fPclass\fB DecTerminalID)" Specifies the emulation level (100=VT100, 220=VT220, etc.), used to determine the type of response to a DA control sequence. +Leading non-digit characters are ignored, e.g., "vt100" and "100" are the same. The default is 100. .TP 8 .B "deleteIsDEL (\fPclass\fB DeleteIsDEL)" @@ -1679,8 +1686,12 @@ .B "forceBoxChars (\fPclass\fB ForceBoxChars)" Specifies whether \fIxterm\fP should assume the normal and bold fonts have VT100 line-drawing characters. -If ``false'', \fIxterm\fP will check for missing characters in the 1-31 -cells and make line-drawing characters directly. +The fixed-pitch fonts used by \fIxterm\fP +normally have the VT100 line-drawing glyphs in cells 1-31. +Other fixed-pitch fonts may be more attractive, but lack these glyphs. +If ``false'', \fIxterm\fP will check for missing glyphs in cells 1-31 +and make line-drawing characters directly. +If ``true'', \fIxterm\fP uses whatever is in cells 1-31 without checking. The default is ``false.'' .TP 8 .B "foreground (\fPclass\fB Foreground)" @@ -1795,15 +1806,22 @@ This is realized by always enabling UTF-8 mode and invoking \fIluit\fR in non-UTF-8 locales. -.TP 4 +.TP .I medium \fIxterm\fR will follow users' LC_CTYPE locale only for UTF-8, east Asian, and Thai locales, where the encodings were not supported by conventional 8bit mode with changing fonts. For other locales, \fIxterm\fR will use conventional 8bit mode. -.TP 4 -.I no +.TP +.I checkfont +If mini-luit is compiled-in, \fIxterm\fR will check if a Unicode font has +been specified. If so, it checks if the character encoding for the +current locale is POSIX, Latin-1 or Latin-9, uses the appropriate +mapping to support those with the Unicode font. +For other encodings, \fIxterm\fR assumes that UTF-8 encoding is required. +.TP +.I false \fIxterm\fR will use conventional 8bit mode or UTF-8 mode according to \fButf8\fR resource or \fB-u8\fP option. .RE @@ -2088,10 +2106,19 @@ sequences (also known as private modes) 1047, 1048 and 1049 which have the same effect as the original 47 control sequence. The default for this resource is ``false.'' +.\" -- resource does not work properly (forms/layout issues) +.\".TP 8 +.\".B "toolBar (\fPclass\fB ToolBar)" +.\"Specifies whether or not the toolbar should be displayed. +.\"The default is +.\"``false.'' .TP 8 .B "translations (\fPclass\fB Translations)" Specifies the key and button bindings for menus, selections, ``programmed strings,'' etc. +The \fBtranslations\fP resource, +which provides much of \fIxterm\fP's configurability, +is a feature of the X Toolkit Intrinsics library (Xt). See the \fBACTIONS\fP section. .TP 8 .B "trimSelection (\fPclass\fB TrimSelection)" @@ -2253,6 +2280,9 @@ .PP The \fImainMenu\fP has the following entries: .TP 8 +.B "toolbar (\fPclass\fB SmeBSB)" +This entry invokes the \fBset-toolbar(toggle)\fP action. +.TP 8 .B "securekbd (\fPclass\fB SmeBSB)" This entry invokes the \fBsecure()\fP action. .TP 8 @@ -2517,8 +2547,7 @@ and then hold the button down while moving the cursor to the end of the region and releasing the button. The selected text is highlighted and is saved in the global cut buffer -and made the PRIMARY selection when -the button is released. +and made the PRIMARY selection when the button is released. Double-clicking selects by words. Triple-clicking selects by lines. @@ -2560,8 +2589,8 @@ you can take text from several places in different windows and form a command to the shell, for example, or take output from a program and insert it into your favorite editor. -Since the cut buffer is globally shared among different applications, -you should regard it as a `file' whose contents you know. +Since cut buffers are globally shared among different applications, +you may regard each as a `file' whose contents you know. The terminal emulator and other text programs should be treating it as if it were a text file, i.e., the text is delimited by new lines. . @@ -2743,7 +2772,7 @@ .TP Quit (quit) Stop processing X events except to support the \fB-hold\fP option, -and then send a SIGHUP signal to the +and then send a SIGHUP signal to the the process group of the process running under .I xterm (usually the shell). @@ -2763,7 +2792,7 @@ .TP Enable Scrollbar (scrollbar) Enable (or disable) the scrollbar. -This corresponds to the +This corresponds to the .B -sb option and the .B scrollBar @@ -2772,7 +2801,7 @@ .TP Enable Jump Scroll (jumpscroll) Enable (or disable) jump scrolling. -This corresponds to the +This corresponds to the .B -j option and the .B jumpScroll @@ -2781,7 +2810,7 @@ .TP Enable Reverse Video (reversevideo) Enable (or disable) reverse-video. -This corresponds to the +This corresponds to the .B -rv option and the .B reverseVideo @@ -2790,7 +2819,7 @@ .TP Enable Auto Wraparound (autowrap) Enable (or disable) auto-wraparound. -This corresponds to the +This corresponds to the .B -aw option and the .B autoWrap @@ -2799,7 +2828,7 @@ .TP Enable Reverse Wraparound (reversewrap) Enable (or disable) reverse wraparound. -This corresponds to the +This corresponds to the .B -rw option and the .B reverseWrap @@ -2831,7 +2860,7 @@ .TP Scroll to Bottom on Key Press (scrollkey) Enable (or disable) scrolling to the bottom of the scrolling region on a keypress. -This corresponds to the +This corresponds to the .B -sk option and the .B scrollKey @@ -2840,7 +2869,7 @@ .TP Scroll to Bottom on Tty Output (scrollttyoutput) Enable (or disable) scrolling to the bottom of the scrolling region on output to the terminal.. -This corresponds to the +This corresponds to the .B -si option and the .B scrollTtyOutput @@ -2849,7 +2878,7 @@ .TP Allow 80/132 Column Switching (allow132) Enable (or disable) switching between 80 and 132 columns. -This corresponds to the +This corresponds to the .B -132 option and the .B c132 @@ -2858,7 +2887,7 @@ .TP Enable Curses Emulation (cursesemul) Enable (or disable) a workaround for the so-called "curses bug". -This corresponds to the +This corresponds to the .B -cu option and the .B curses @@ -2867,7 +2896,7 @@ .TP Enable Visual Bell (visualbell) Enable (or disable) visible bell (i.e., flashing) instead of an audible bell. -This corresponds to the +This corresponds to the .B -vb option and the .B visualBell @@ -2876,7 +2905,7 @@ .TP Enable Pop on Bell (poponbell) Enable (or disable) raising of the window when Control-G is received. -This corresponds to the +This corresponds to the .B -pop option and the .B popOnBell @@ -2885,7 +2914,7 @@ .TP Enable Margin Bell (marginbell) Enable (or disable) a bell when the user types near the right margin. -This corresponds to the +This corresponds to the .B -mb option and the .B marginBell @@ -2894,7 +2923,7 @@ .TP Enable Blinking Cursor (cursorblink) Enable (or disable) the blinking-cursor feature. -This corresponds to the +This corresponds to the .B -bc option and the .B cursorBlink @@ -2908,7 +2937,7 @@ .TP Enable Alternate Screen Switching (titeInhibit) Enable (or disable) switching between the normal and alternate screens. -This corresponds to the +This corresponds to the .B titeInhibit resource. There is no corresponding command-line option. @@ -2916,7 +2945,7 @@ .TP Enable Active Icon (activeicon) Enable (or disable) the active-icon feature. -This corresponds to the +This corresponds to the .B -ai option and the .B activeIcon @@ -3040,7 +3069,7 @@ Font escape sequence (see the document \fIXterm Control Sequences\fP). .TP Selection (fontsel) -This allows you to set the font specified +This allows you to set the font specified the current selection as a font name (if the PRIMARY selection is owned). .RE .PP @@ -3293,11 +3322,13 @@ . .SH ACTIONS It is possible to rebind keys (or sequences of keys) to arbitrary strings -for input, by changing the translations for the vt100 or tek4014 widgets. -Changing the translations for events other than key and button events -is not expected, and will cause unpredictable behavior. +for input, by changing the \fBtranslations\fP resources +for the vt100 or tek4014 widgets. +Changing the \fBtranslations\fP resource +for events other than key and button events is not expected, +and will cause unpredictable behavior. The following -actions are provided for using within the \fIvt100\fP or \fItek4014\fP +actions are provided for use within the \fIvt100\fP or \fItek4014\fP \fBtranslations\fP resources: .TP 8 .B "allow-send-events(\fIon/off/toggle\fP)" @@ -3465,8 +3496,8 @@ mouse reporting is enabled. .TP 8 .B "scroll-forw(\fIcount\fP [,\fIunits\fP [,\fImouse\fP] ])" -This action scrolls is similar to \fBscroll-back\fP except that it scrolls -the other direction. +This action is similar to \fBscroll-back\fP except that it scrolls +in the other direction. .TP 8 .B "secure()" This action toggles the \fISecure Keyboard\fP mode described in the @@ -3487,8 +3518,7 @@ .TP 8 .B "select-extend()" This action tracks the pointer and extends the selection. -It -should only be bound to Motion events. +It should only be bound to Motion events. .TP 8 .B "select-set()" This action stores text that corresponds to the current selection, @@ -3643,6 +3673,11 @@ This action toggles the \fBtiteInhibit\fP resource, which controls switching between the alternate and current screens. .TP 8 +.\" should toggle "toolBar" resource (see note). +.B "set-toolbar(\fIon/off/toggle\fP)" +This action toggles the toolbar feature and is also invoked by +the \fBtoolbar\fP entry in \fImainMenu\fP. +.TP 8 .B "set-utf8-mode(\fIon/off/toggle\fP)" This action toggles the \fButf8\fP resource and is also invoked by the \fButf8-mode\fP entry in \fIfontMenu\fP. @@ -3797,7 +3832,7 @@ @Num_Lock Ctrl :scroll-forw(1,halfpage,m) \\n\\ :scroll-forw(5,line,m) \\n\\ :select-end(PRIMARY, CUT_BUFFER0) \\n\\ - :bell(0) + :ignore() .fi .ft P .sp @@ -3830,6 +3865,32 @@ .sp .in -4 .PP +Here is an example which uses shifted select/paste to copy to the clipboard, +and unshifted select/paste for the primary selection. +In each case, a (different) cut buffer is +also a target or source of the select/paste operation. +It is important to remember however, +that cut buffers store data in ISO-8859-1 encoding, +while selections can store data in a variety of formats and encodings. +While \fIxterm\fP owns the selection, it highlights it. +When it loses the selection, it removes the corresponding highlight. +But you can still paste from the corresponding cut buffer. +.sp +.in +4 +.nf +.ta .5i 1.5i +.nf +.ft C \" Courier +*VT100*translations: #override \\n\\ + ~Shift~Ctrl: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\ + Shift~Ctrl: insert-selection(CLIPBOARD, CUT_BUFFER1) \\n\\ + ~Shift: select-end(PRIMARY, CUT_BUFFER0) \\n\\ + Shift: select-end(CLIPBOARD, CUT_BUFFER1) +.fi +.ft P +.sp +.in -4 +.PP Below is a sample how of the \fBkeymap()\fP action is used to add special keys for entering commonly-typed works: .sp diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xterm_io.h x11r682/xc/programs/xterm/xterm_io.h --- xc/programs/xterm/xterm_io.h 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/xterm_io.h 2005-01-12 22:45:10.000000000 +0100 @@ -1,5 +1,5 @@ /* - * $XFree86: xc/programs/xterm/xterm_io.h,v 1.15 2004/04/03 22:26:26 dawes Exp $ + * $XFree86: xc/programs/xterm/xterm_io.h,v 1.16 2004/12/01 01:27:47 dickey Exp $ */ /* @@ -58,7 +58,7 @@ #define USE_SYSV_TERMIO #endif -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) #ifndef USE_POSIX_TERMIOS #define USE_POSIX_TERMIOS #endif diff -N -x '*CVS*' -r -u x11r680/xc/programs/xterm/xtermcfg.hin x11r682/xc/programs/xterm/xtermcfg.hin --- xc/programs/xterm/xtermcfg.hin 2004-08-13 14:57:21.000000000 +0200 +++ xc/programs/xterm/xtermcfg.hin 2005-01-12 22:45:10.000000000 +0100 @@ -1,7 +1,7 @@ -/* $XTermId: xtermcfg.hin,v 1.126 2004/05/26 01:19:55 tom Exp $ */ +/* $XTermId: xtermcfg.hin,v 1.128 2004/12/01 01:27:47 tom Exp $ */ /* - * $XFree86: xc/programs/xterm/xtermcfg.hin,v 3.51 2004/05/26 01:19:55 dickey Exp $ + * $XFree86: xc/programs/xterm/xtermcfg.hin,v 3.52 2004/12/01 01:27:47 dickey Exp $ */ /************************************************************ @@ -94,6 +94,7 @@ #undef OPT_LOAD_VTFONTS /* CF_ARG_ENABLE(load-vt-fonts) */ #undef OPT_LUIT_PROG /* CF_ARG_ENABLE(luit) */ #undef OPT_MAXIMIZE /* CF_ARG_DISABLE(maximize) */ +#undef OPT_MINI_LUIT /* CF_ARG_ENABLE(mini-luit) */ #undef OPT_NUM_LOCK /* CF_ARG_DISABLE(num-lock) */ #undef OPT_PC_COLORS /* CF_ARG_DISABLE(pc-color) */ #undef OPT_PTY_HANDSHAKE /* CF_ARG_ENABLE(pty-handshake) */ diff -N -x '*CVS*' -r -u x11r680/xc/util/memleak/getretmips.c x11r682/xc/util/memleak/getretmips.c --- xc/util/memleak/getretmips.c 2003-11-14 17:49:24.000000000 +0100 +++ xc/util/memleak/getretmips.c 2004-12-13 05:07:51.000000000 +0100 @@ -184,12 +184,15 @@ } ra = (unsigned long *) sp[rc->raOffset>>2]; sp += rc->spAdjust >> 2; - *results++ = ((unsigned long) ra) - 8; if (ra[-2] == mainCall) { *results++ = 0; break; } + else + { + *results++ = ((unsigned long) ra) - 8; + } max--; } }